【问题标题】:Express.js w/ Compass doesn't work with PM2带有 Compass 的 Express.js 不适用于 PM2
【发布时间】:2017-05-21 19:13:16
【问题描述】:

我使用express-generator 生成了一个带有指南针样式表引擎的项目:

express --css compass app

当我开始使用npm start(或node ./bin/www,fwiw)时,该应用程序符合预期。

但是,当我使用 pm2 运行应用程序时,pm2 start ./bin/www 应用程序运行并返回一个 html 响应,但是当浏览器请求它时 CSS 失败,进程终止并且 pm2 重新启动它。这是一个返回 502 Bad Gateway 的 nginx 后面。

这些是 pm2 日志:

0|www      | GET /home 200 320.238 ms - 914
0|www      | Error: spawn compass ENOENT
0|www      |     at exports._errnoException (util.js:1050:11)
0|www      |     at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
0|www      |     at onErrorNT (internal/child_process.js:367:16)
0|www      |     at _combinedTickCallback (internal/process/next_tick.js:80:11)
0|www      |     at process._tickDomainCallback (internal/process/next_tick.js:128:9)
PM2        | App [www] with id [0] and pid [6624], exited with code [1] via signal [SIGINT]
PM2        | Starting execution sequence in -fork mode- for app name:www id:0
PM2        | App name:www id:0 online

我找不到任何关于为什么会发生这种情况的信息,以及为什么它适用于 node,但不适用于 pm2。任何帮助表示赞赏。

【问题讨论】:

    标签: node.js express compass-sass pm2 express-generator


    【解决方案1】:

    Compass 是需要安装的原生依赖项。

    $ gem update --system
    $ gem install compass
    

    否则,我强烈建议,你应该编译你的指南针样式表,不仅因为服务器上的命中率很高而且没有必要。

    相关:SO.

    【讨论】:

    • 是的,它已安装。我可能会特别提到它,但我确实说过使用node bin/www(包括指南针)运行时一切正常。
    • 是的,但其余的都可以。这里运行了很多层(进程),很难推理。您正在从节点运行一些脚本,在您的 pm2 进程中的节点进程中。静态编译样式表在这里应该是最好的,因为你不能真正说出哪个脚本是从哪里执行的,或者用哪个脚本执行,比如 ENOENT 可能指向的 cwd。
    • 另外,当我查看您的生成部分时,我什至无法运行它。难怪因为 2 年前的 compass 依赖。
    猜你喜欢
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多