在Node.js中出现错误:spawn ENOENT

6
我用express-generator启动了一个node.js应用程序,我遇到了一个奇怪的问题,就是当我用浏览器访问某个页面两次时,第一次可以正常加载,但第二次无法加载,因为node进程会出现以下错误:
GET / 304 412ms

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: spawn ENOENT
    at errnoException (child_process.js:988:11)
    at Process.ChildProcess._handle.onexit (child_process.js:779:34)

package.json

{
  "name": "example01-express",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node-dev ./bin/www"
  },
  "dependencies": {
    "body-parser": "~1.0.0",
    "cookie-parser": "~1.0.1",
    "debug": "~0.7.4",
    "express": "~4.2.0",
    "jade": "~1.3.0",
    "morgan": "~1.0.0",
    "node-compass": "0.2.3",
    "static-favicon": "~1.0.0"
  },
  "devDependencies": {
    "grunt": "^0.4.5",
    "grunt-contrib-cssmin": "*",
    "grunt-contrib-jshint": "^0.10.0",
    "grunt-contrib-sass": "*",
    "grunt-contrib-uglify": "*",
    "grunt-contrib-watch": "*",
    "grunt-cssc": "*",
    "grunt-htmlhint": "*",
    "matchdep": "*"
  }
}

可以提供访问页面时执行的代码吗?另外,您可以尝试捕获异常并记录以获取更多信息。请参考这里 - Salem
1
这似乎与指南针模块的设置有关。当我注释掉这行代码时,一切都正常工作:// app.use(require('node-compass')({mode: 'expanded'})); - filype
1
compass已经安装/在您的路径中了吗?您可以使用which compass进行检查。这可能会解释ENOENT部分... - Salem
1
node-compass readme 中有安装compass ruby gem的命令,这是使用node-compass所需的。 - mscdex
Salem,你可能是对的,我只是假设node-compass是在node中实现的compass,所以我不需要ruby gem。如果你把它发布为答案,我会给你信用。 - filype
这对我有用:https://dev59.com/E7Lma4cB1Zd3GeqPZVdF#65008091 - Ank_247shbm
1个回答

8

我原以为node库中有JS版本的Compass,但实际上它并没有在我的路径中安装。

如果有类似问题的人,可以通过gem install compass解决。详情请参考Compass文档


如果问题仍然存在,未来的访问者也可以尝试以下QA。https://dev59.com/SV4c5IYBdhLWcg3wqLte - laconbass
哇,那个错误并没有暗示指南针不在路径中...我很高兴我找到了它! - mrClean

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接