“./bin/www”在 Express 4.x 中起什么作用?

2023-12-10

我刚刚开始在我的 Node.js 应用程序中学习 Express 4.0,我发现它生成了./bin/www文件,其中仅写入应用程序服务器和端口设置,而其他所有内容(例如中间件和路由)都在中定义./app.js file.

但是,我不确定这是什么./bin/www做。我使用过 Express 3.x,并且始终在同一台上定义服务器和端口设置以及路由和中间件./app.js文件,并启动我的节点应用程序node app.js。那么使用的意义何在./bin/www?它是否仅将服务器和端口定义与其他定义分开?

现在,当我使用express-generator创建包时,package.json包括以下定义:

"scripts": {
    "start": "node ./bin/www"
}

但是,我想知道我是否应该使用启动我的应用程序node ./bin/www, or npm start。我应该运行哪个命令来启动我的应用程序?

另外,当我将应用程序部署到heroku时,我应该在Procfile文件?是web: node app.js enough?


In 快车3.0,你通常会使用app.configure() (or app.use())来设置您需要的中间件。您指定的那些中间件与 Express 3.0 捆绑在一起。

Example:

var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');

var app = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.compress());
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());

In 快递4.0但是,所有中间件都已被删除,以便它们可以独立于核心 Express 进行维护和更新(静态中间件除外),因此需要单独调用它们(您在app.js).

The bin/目录作为一个位置,您可以在其中定义各种启动脚本. The www是一个将 Express 应用程序作为 Web 服务器启动的示例。

最终,您可以有不同的脚本,例如test, stop, or restart等等。有了这种结构,您就可以拥有不同的启动配置,而无需将所有内容都塞进去app.js.

启动 Express 应用程序的正确方法是:

npm start

要部署一个快递4.x app to Heroku,将其添加到您的Procfile:

web: npm start

或者,如果您可以只使用启动脚本package.json,heroku 会自动使用它,阅读更多here

"scripts": {
    "start": "node ./bin/www",
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“./bin/www”在 Express 4.x 中起什么作用? 的相关文章

随机推荐

  • 如何在 beforeload 事件中获取 Extjs 4 商店的请求数据?

    我正在尝试在商店加载事件之前获取请求数据参数 我可以看到操作对象包含请求数据 但我似乎无法从操作对象获取它 Ext create Ext data Store autoLoad true fields name item code type
  • 如何使用 luasql 创建 Sqlite3 数据库?

    我正在尝试使用 luasql 创建 Sqlite3 数据库 之后我requireluasql sqlite3 如何在文件上创建数据库 另外 我似乎找不到 luasql 的手册 任何地方都可以使用吗 如果数据库不存在 SQLite 将自动创建
  • 在 Windows 批处理中转义特殊字符

    我有一个批处理文件 它接收路径作为第一个参数 该路径始终由特殊字符组成 例如 or 调用类似于这样 D Script gt MyBatch My path test 00170 LASTNAME Firstname image 总是出现这个
  • 我当前在 Eclipse MacOS Big Sur 上进行 GDB 调试时遇到错误

    在 Big Sur 上通过 Homebrew 安装 GDB 后 我目前遇到了一个奇怪的错误 我已经正确配置了 Eclipse 的所有内容 我的 GDB 链接为调试器 但是 每次我尝试启动调试时 都没有任何反应 并且控制台中出现以下内容 00
  • e.keyCode 不起作用

    我想问你一些对我不起作用的事情 如果你能帮助我的话 Html
  • 在 Inno Setup Run 部分命令中扩展 .NET 路径常量时的错误处理/忽略

    我有一个 NET DLL 可以通过以下方式注册RegAsm NET 3 5 和 NET 4 5 我在我的设置脚本中使用以下代码 Run Filename dotnet40 RegAsm exe Parameters my dll Worki
  • pyspark 与 scala 中的 FPgrowth 计算关联

    Using http spark apache org docs 1 6 1 mllib frequent pattern mining html Python代码 from pyspark mllib fpm import FPGrowt
  • 如何在php中逐行读取

    当我尝试将每一行插入 Oracle 数据库时 我收到一条错误 指出数字无效 但如果文件中只有一行 则可以正常工作 file fopen file text r while there is another line to read in t
  • 如何使 document.querySelector 在 IE6 中工作

    我在一个网站上工作 我得到了一个在 Internet Explorer 6 中不起作用的 JavaScript 函数 我知道 document querySelector selector 只工作在 Internet Explorer 8
  • PHP 的 DOM 和 SimpleXML 扩展之间有什么区别?

    我无法理解为什么 PHP 中需要 2 个 XML 解析器 有人能解释一下这两者之间的区别吗 简而言之 简单XML 适用于简单的 XML 和 或简单的用例 与节点一起使用的 API 有限 例如 无法对接口进行太多编程 所有节点都是同类 元素节
  • Pandas 重叠重采样

    我想对我的时间索引 DataFrame 进行一些重叠的重新采样 例如 gt gt gt df data date 2018 03 09 12 00 00 1 2018 03 09 12 00 01 1 2018 03 09 12 00 02
  • ARM 系统调用作为 C++ 模板

    我需要在 newlib 存根中调用一些系统调用 当前的实现使用 C 宏 随着时间的推移 这些宏变得不可读且看起来很糟糕 我讨厌宏 然而 我使用 C 模板的实现仅适用于一个参数 template
  • PHP应用程序的评论和回复的递归函数

    我很难概念化用于附加对评论的回复 对回复的回复 对回复的回复的回复等的递归函数 这是我的评论表 Which SHOULD渲染时看起来像这样 按照目前的情况 我可以呈现与article id相关的每条评论 不包括那些NOT NULL 当然 c
  • 获取实现某个抽象类的所有类

    我试图获取实现某个抽象类的所有类 我正在尝试使用以下代码来做到这一点 var type typeof BaseViewComponent var types Assembly GetEntryAssembly GetReferencedAs
  • 媒体播放器应该停止以编程方式断开我的 Android 应用程序中的耳机连接

    我在开发媒体播放器应用程序时遇到问题 我希望这样当我从设备上取下耳机时 我的应用程序中的 MediaPlayer 就会暂停 Android 文档建议使用 AUDIO BECOMING NOISY 意图过滤器 在您的清单中设置意图过滤器 然后
  • 使用 CMake 将文件从源目录复制到二进制目录

    我正在尝试在 CLion 上创建一个简单的项目 它使用 CMake 生成 Makefile 来构建项目 或某种项目 我需要的只是每次运行代码时将一些非项目文件 某种资源文件 传输到二进制目录 该文件包含测试数据 应用程序打开它来读取它们 我
  • Python:使用值的 sum() 优雅地合并字典[重复]

    这个问题在这里已经有答案了 我正在尝试合并来自多个服务器的日志 每个日志都是一个元组列表 date count date可能会出现多次 并且我希望生成的字典能够保存来自所有服务器的所有计数的总和 这是我的尝试 例如一些数据 from col
  • 在 UILabel 中查找子字符串的坐标

    我有一个来自服务器的字符串 我正在 UILabel 上显示它 在该字符串中 我正在识别一些特定的子字符串 我想在该子字符串上放置一个按钮 按钮将是 UILabel 的子视图 为此 我需要子字符串坐标 我经历了这个要点但我无法理解它 假设我的
  • 从Android Market查询最新的应用程序版本

    我可以通过代码在 Android Market 中查询我的应用程序的最新版本吗 我想在新版本可用时向用户显示更新通知 相关问题 在市场上更新我的应用程序的过程 Android 上有没有办法自动更新应用程序 Android 市场应用程序更新
  • “./bin/www”在 Express 4.x 中起什么作用?

    我刚刚开始在我的 Node js 应用程序中学习 Express 4 0 我发现它生成了 bin www文件 其中仅写入应用程序服务器和端口设置 而其他所有内容 例如中间件和路由 都在中定义 app js file 但是 我不确定这是什么