示例

中英双语

执行以下命令创建 Express 4 应用程序:

$ express app4

如果查看 app4/app.js 文件的内容,您会注意到应用程序所需的所有中间件功能(express.static 除外)都作为独立模块加载,并且 router 中间件不再显式加载到应用程序中。

您还会注意到 app.js 文件现在是一个 Node.js 模块,与旧生成器生成的独立应用程序不同。

安装依赖项后,使用以下命令启动应用程序:

$ npm start

如果你查看 package.json 文件中的 npm start 脚本,你会注意到启动应用程序的实际命令是 node ./bin/www,以前在 Express 3 中是 node app.js

因为 Express 4 生成器生成的 app.js 文件现在是一个 Node.js 模块,所以它不能再作为应用程序独立启动(除非您修改代码)。该模块必须加载到 Node.js 文件中并通过 Node.js 文件启动。在这种情况下,Node.js 文件是 ./bin/www

bin 目录和无扩展名的 www 文件都不是创建 Express 应用程序或启动应用程序所必需的。它们只是生成器提出的建议,因此请随意修改它们以满足您的需求。

要摆脱 www 目录并保留 "Express 3 way",请删除 app.js 文件末尾的 module.exports = app; 行,然后将以下代码粘贴到其位置:

app.set('port', process.env.PORT || 3000)

var server = app.listen(app.get('port'), () => {
  debug('Express server listening on port ' + server.address().port)
})

确保使用以下代码在 app.js 文件的顶部加载 debug 模块:

var debug = require('debug')('app4')

接下来,将 package.json 文件中的 "start": "node ./bin/www" 更改为 "start": "node app.js"

您现在已将 ./bin/www 的功能移回 app.js。不建议进行此更改,但该练习可帮助您了解 ./bin/www 文件的工作原理以及 app.js 文件不再自行启动的原因。