【问题标题】:How do run an express-generator created application in production mode?如何在生产模式下运行 express-generator 创建的应用程序?
【发布时间】:2019-07-10 05:47:48
【问题描述】:

我正在使用 Express 应用程序生成器,它建议以这种方式启动服务器:

$ DEBUG=myapp:* npm start

这有效,我的应用开始在指定的端口上侦听。

但是,DEBUG 让我想知道:这是在“开发”模式下运行的吗?如果是这样,在服务器上部署时如何在生产模式下运行它?

如果我只运行npm start,它就会卡住:

$ npm start

> myapp@0.0.0 start /home/aalaap/projects/myapp
> node ./bin/www

没有一行说服务器正在监听并且应用程序不可访问。

如果我运行node app.js,它会立即退出,没有任何输出。

我觉得在调试模式下运行应用程序可能不适合生产,但如果我没有正确理解这一点,我可能会错。

编辑: 在服务器上,有一个 cron 条目,它会定期重启服务器,以防它崩溃。如果上述方法是运行它的唯一方法,我是否应该修改 cron 命令以包含 DEBUG 部分?

【问题讨论】:

    标签: node.js express npm npm-start dev-to-production


    【解决方案1】:

    使用 NODE_ENV 环境变量:

    $ NODE_ENV=production npm start 
    

    您提到的 DEBUG 变量仅用于日志输出,并配置您希望在日志中看到的确切内容。

    如果不查看任何代码并对其进行调试,就无法回答为什么您的应用程序挂起的问题。我几乎不怀疑它与环境变量有关。

    【讨论】:

    • 这也会导致 Node 挂起。似乎除非设置了DEBUG 变量,否则Node 无法运行服务器。代码中没有什么可看的,因为它是默认的 express-generator 脚手架。我没有添加任何其他内容。
    • 请求的端口可用吗?
    • 是的,端口是空闲的,否则会出现EADDRINUSE 错误之类的。
    • 我想通了。服务器没有挂起,它只是没有输出“正在侦听...”状态文本,因为它只在调试模式下这样做。这使您的答案正确。
    【解决方案2】:

    使用以下命令:

    npm 开始

    【讨论】:

      【解决方案3】:

      已解决: 运行以下命令:

      将应用名称替换为 您的应用名称。

      SET DEBUG=app-name:* & npm start

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-31
        • 2012-04-19
        • 1970-01-01
        • 2012-03-12
        • 1970-01-01
        • 2017-01-24
        相关资源
        最近更新 更多