Skip to content

Commit

Permalink
Merge pull request #24 from expressjs/master
Browse files Browse the repository at this point in the history
Create a new pull request by comparing changes across two branches
  • Loading branch information
GulajavaMinistudio authored Oct 21, 2024
2 parents 2e990aa + e162764 commit f7201f4
Show file tree
Hide file tree
Showing 5 changed files with 100 additions and 42 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
node-version: [18, 19, 20, 21, 22]
node-version: [18, 19, 20, 21, 22, 23]
# Node.js release schedule: https://nodejs.org/en/about/releases/

name: Node.js ${{ matrix.node-version }} - ${{matrix.os}}
Expand Down
4 changes: 2 additions & 2 deletions Contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ project for at least 6 months as a committer prior to the request. They should h
helped with code contributions as well as triaging issues. They are also required to
have 2FA enabled on both their GitHub and npm accounts. Any TC member or existing
captain on the repo can nominate another committer to the captain role, submit a PR to
this doc, under `Current Project Captains` section (maintaining the sort order) with
this doc, in the **Active Project Captains** section (maintaining the sort order) with
the project, their GitHub handle and npm username (if different). The PR will require
at least 2 approvals from TC members and 2 weeks hold time to allow for comment and/or
dissent. When the PR is merged, a TC member will add them to the proper GitHub/npm groups.
Expand All @@ -153,7 +153,7 @@ dissent. When the PR is merged, a TC member will add them to the proper GitHub/
- [`expressjs/errorhandler`](https://github.com/expressjs/errorhandler): @ulisesGascon
- [`expressjs/express-paginate`](https://github.com/expressjs/express-paginate): @ulisesGascon
- [`expressjs/express`](https://github.com/expressjs/express): @wesleytodd, @ulisesGascon
- [`expressjs/expressjs.com`](https://github.com/expressjs/expressjs.com): @crandmck, @jonchurch
- [`expressjs/expressjs.com`](https://github.com/expressjs/expressjs.com): @crandmck, @jonchurch, @bjohansebas
- [`expressjs/flash`](https://github.com/expressjs/flash): @ulisesGascon
- [`expressjs/generator`](https://github.com/expressjs/generator): @wesleytodd
- [`expressjs/method-override`](https://github.com/expressjs/method-override): @ulisesGascon
Expand Down
80 changes: 42 additions & 38 deletions Readme.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[![Express Logo](https://i.cloudup.com/zfY6lL7eFa-3000x3000.png)](http://expressjs.com/)
[![Express Logo](https://i.cloudup.com/zfY6lL7eFa-3000x3000.png)](https://expressjs.com/)

**Fast, unopinionated, minimalist web framework for [Node.js](http://nodejs.org).**
**Fast, unopinionated, minimalist web framework for [Node.js](https://nodejs.org).**

**This project has a [Code of Conduct][].**

Expand All @@ -26,10 +26,11 @@


```js
const express = require('express')
import express from 'express'

const app = express()

app.get('/', function (req, res) {
app.get('/', (req, res) => {
res.send('Hello World')
})

Expand All @@ -42,19 +43,19 @@ This is a [Node.js](https://nodejs.org/en/) module available through the
[npm registry](https://www.npmjs.com/).

Before installing, [download and install Node.js](https://nodejs.org/en/download/).
Node.js 0.10 or higher is required.
Node.js 18 or higher is required.

If this is a brand new project, make sure to create a `package.json` first with
the [`npm init` command](https://docs.npmjs.com/creating-a-package-json-file).

Installation is done using the
[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):

```console
$ npm install express
```bash
npm install express
```

Follow [our installing guide](http://expressjs.com/en/starter/installing.html)
Follow [our installing guide](https://expressjs.com/en/starter/installing.html)
for more information.

## Features
Expand All @@ -69,41 +70,38 @@ for more information.

## Docs & Community

* [Website and Documentation](http://expressjs.com/) - [[website repo](https://github.com/expressjs/expressjs.com)]
* [#express](https://web.libera.chat/#express) on [Libera Chat](https://libera.chat) IRC
* [Website and Documentation](https://expressjs.com/) - [[website repo](https://github.com/expressjs/expressjs.com)]
* [GitHub Organization](https://github.com/expressjs) for Official Middleware & Modules
* Visit the [Wiki](https://github.com/expressjs/express/wiki)
* [Google Group](https://groups.google.com/group/express-js) for discussion
* [Gitter](https://gitter.im/expressjs/express) for support and discussion
* [Github Discussions](https://github.com/expressjs/discussions) for discussion on the development and usage of Express

**PROTIP** Be sure to read [Migrating from 3.x to 4.x](https://github.com/expressjs/express/wiki/Migrating-from-3.x-to-4.x) as well as [New features in 4.x](https://github.com/expressjs/express/wiki/New-features-in-4.x).
**PROTIP** Be sure to read the [migration guide to v5](https://expressjs.com/en/guide/migrating-5)

## Quick Start

The quickest way to get started with express is to utilize the executable [`express(1)`](https://github.com/expressjs/generator) to generate an application as shown below:

Install the executable. The executable's major version will match Express's:

```console
$ npm install -g express-generator@4
```bash
npm install -g express-generator@4
```

Create the app:

```console
$ express /tmp/foo && cd /tmp/foo
```bash
express /tmp/foo && cd /tmp/foo
```

Install dependencies:

```console
$ npm install
```bash
npm install
```

Start the server:

```console
$ npm start
```bash
npm start
```

View the website at: http://localhost:3000
Expand All @@ -115,29 +113,32 @@ $ npm start
HTTP APIs.

Express does not force you to use any specific ORM or template engine. With support for over
14 template engines via [Consolidate.js](https://github.com/tj/consolidate.js),
14 template engines via [@ladjs/consolidate](https://github.com/ladjs/consolidate),
you can quickly craft your perfect framework.

## Examples

To view the examples, clone the Express repo and install the dependencies:
To view the examples, clone the Express repository:

```bash
git clone https://github.com/expressjs/express.git --depth 1 && cd express
```

Then install the dependencies:

```console
$ git clone https://github.com/expressjs/express.git --depth 1
$ cd express
$ npm install
```bash
npm install
```

Then run whichever example you want:

```console
$ node examples/content-negotiation
```bash
node examples/content-negotiation
```

## Contributing

[![Linux Build][github-actions-ci-image]][github-actions-ci-url]
[![Windows Build][appveyor-image]][appveyor-url]
[![Test Coverage][coveralls-image]][coveralls-url]

The Express.js project welcomes all constructive contributions. Contributions take many forms,
Expand All @@ -152,11 +153,16 @@ If you discover a security vulnerability in Express, please see [Security Polici

### Running Tests

To run the test suite, first install the dependencies, then run `npm test`:
To run the test suite, first install the dependencies:

```bash
npm install
```

Then run `npm test`:

```console
$ npm install
$ npm test
```bash
npm test
```

## People
Expand Down Expand Up @@ -244,11 +250,9 @@ The original author of Express is [TJ Holowaychuk](https://github.com/tj)

[MIT](LICENSE)

[appveyor-image]: https://badgen.net/appveyor/ci/dougwilson/express/master?label=windows
[appveyor-url]: https://ci.appveyor.com/project/dougwilson/express
[coveralls-image]: https://badgen.net/coveralls/c/github/expressjs/express/master
[coveralls-url]: https://coveralls.io/r/expressjs/express?branch=master
[github-actions-ci-image]: https://badgen.net/github/checks/expressjs/express/master?label=linux
[github-actions-ci-image]: https://badgen.net/github/checks/expressjs/express/master?label=CI
[github-actions-ci-url]: https://github.com/expressjs/express/actions/workflows/ci.yml
[npm-downloads-image]: https://badgen.net/npm/dm/express
[npm-downloads-url]: https://npmcharts.com/compare/express?minimal=true
Expand Down
6 changes: 5 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,11 @@
],
"license": "MIT",
"repository": "expressjs/express",
"homepage": "http://expressjs.com/",
"homepage": "https://expressjs.com/",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/express"
},
"keywords": [
"express",
"framework",
Expand Down
50 changes: 50 additions & 0 deletions test/app.router.js
Original file line number Diff line number Diff line change
Expand Up @@ -1156,6 +1156,56 @@ describe('app.router', function(){
var app = express();
assert.strictEqual(app.get('/', function () {}), app)
})

it('should should not use disposed router/middleware', function(done){
// more context: https://github.com/expressjs/express/issues/5743#issuecomment-2277148412

var app = express();
var router = new express.Router();

router.use(function(req, res, next){
res.setHeader('old', 'foo');
next();
});

app.use(function (req, res, next) {
return router.handle(req, res, next);
});

app.get('/', function(req, res, next){
res.send('yee');
next();
});

request(app)
.get('/')
.expect('old', 'foo')
.expect(function(res) {
if (typeof res.headers['new'] !== 'undefined') {
throw new Error('`new` header should not be present');
}
})
.expect(200, 'yee', function(err, res) {
if (err) return done(err);

router = new express.Router();

router.use(function(req, res, next){
res.setHeader('new', 'bar');
next();
});

request(app)
.get('/')
.expect('new', 'bar')
.expect(function(res) {
if (typeof res.headers['old'] !== 'undefined') {
throw new Error('`old` header should not be present');
}
})
.expect(200, 'yee', done);
});
})
})

function supportsRegexp(source) {
Expand Down

0 comments on commit f7201f4

Please sign in to comment.