获取错误:在运行grunt时生成./node_modules/.bin/grunt ENOENT

时间:2017-05-02 12:13:16

标签: node.js windows gruntjs child-process

我有一个由

开发的项目

yarn start

它运行一个index.js,启动一个grunt进程并收到此错误:

$ yarn start
yarn start v0.23.2
$ node ./development
grunt_arguments [ '--force', '--notify', '--verbose', '--debug', '--stack' ]
=======================================
Open http://localhost:8000 to start developing

events.js:141
      throw er; // Unhandled 'error' event
      ^

Error: spawn ./node_modules/.bin/grunt ENOENT
    at exports._errnoException (util.js:907:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:189:32)
    at onErrorNT (internal/child_process.js:355:16)
    at nextTickCallbackWith2Args (node.js:458:9)
    at process._tickCallback (node.js:372:17)
    at Function.Module.runMain (module.js:443:11)
    at startup (node.js:139:18)
    at node.js:990:3
error Command failed with exit code 1.

不知道它能是什么。环境是:

  • Win10
  • 使用MINGW64运行

1 个答案:

答案 0 :(得分:2)

我经常使用补丁child_process来帮助我调试这类问题。在index.js文件的开头添加类似的内容:

const util = require('util')
const childProcess = require("child_process");

const originalSpawn = childProcess.spawn;

childProcess.spawn = function() {
    console.trace('SPAWN');
    console.log('ARGS');
    console.log(util.inspect(arguments, false, null)); // showHidden = false, depth = null

    return originalSpawn.apply(this, arguments);
};

如果你的跑步childProcess.spawn('ls', ['-lh', '/usr']),你会看到类似的内容:

Trace: SPAWN
    at Object.childProcess.spawn (repl:2:9)
    at myFunction (repl:2:14)
    at repl:1:1
    at REPLServer.defaultEval (repl.js:164:27)
    at bound (domain.js:250:14)
    at REPLServer.runBound [as eval] (domain.js:263:12)
    at REPLServer.<anonymous> (repl.js:392:12)
    at emitOne (events.js:82:20)
    at REPLServer.emit (events.js:169:7)
    at REPLServer.Interface._onLine (readline.js:210:10)
ARGS
{ '0': 'ls', '1': [ '-lh', '/usr' ] }

也许在运行之后,您可以使用新信息更新您的问题。