gpt4 book ai didi

node.js - Node JS - child_process spawn ('npm install')在 Grunt 任务中导致 ENOENT 错误

转载 作者:搜寻专家 更新时间:2023-10-31 22:19:26 37 4
gpt4 key购买 nike

我在编写 Grunt 任务时遇到了一些困难。我正在尝试执行 npm install,然后执行 bower install,然后执行 grunt hub 目标(以触发多个子项目的构建命令)。

我遇到的问题在于 child_process。如果我在我的 grunt 任务中运行以下命令,我会收到 spawn ENOENT 错误,使用当前被注释掉的 npm install spawn 命令:

    var path = require('path'),
projectPath = path.resolve(process.cwd(), this.data.activity );

grunt.log.debug('project path computed as: ', projectPath);
process.chdir( projectPath );

console.log('current dir is: ', process.cwd());
console.log('EVN is: ', process.env);

var spawnProcess = spawn('ls');
// var spawnProcess = spawn('npm install');

spawnProcess.stdout.on('data', function (data) {
console.log('' + data);
});

spawnProcess.stderr.on('data', function(data) {

console.log('something went wrong installing deps for ' + path + '. Error: ', data);
});

spawnProcess.on('close', function (exitCode) {

console.log( 'ls has finished with Exit Code: ' + exitCode);
});

当前代码(使用 ls 而不是 npm install)导致:

   running "install:projects" (install) task[D] Task source: /Users/zedd45/proj/Gruntfile.js
Verifying property install.projects exists in config...OK
File: [no files]
[D] project path computed as: /Users/zedd45/proj/activity/web/client
current dir is: /Users/zedd45/proj/activity/web/client
EVN (abbreviated) is: {
TERM_PROGRAM: 'iTerm.app',
SHELL: '/bin/bash',
PWD: '/Users/zedd45/proj',
...
OLDPWD: '/Users/zedd45/proj/activity/web/client',
_: '/usr/local/bin/grunt' }

GruntFile.js
bower.json
package.json
this_is_the_directory_you_are_looking_for.txt
ls has finished with Exit Code: 0

但如果我将“ls”更改为“npm install”,我会得到`` fatal error :生成 ENOENT

紧跟在 ENV 打印之后。

我已经为该目录尝试了 chmod 777,但似乎没有帮助。

我也试过:

// var spawnProcess = spawn('npm install', {'cwd': projectPath});

// var spawnProcess = spawn('npm install', [], {'cwd': projectPath});

前者结果为

Warning: Object # has no method 'slice' Use --force to continue.

后者仍然会导致 ENOENT 错误。

任何关于此 ENOENT 错误的确切帮助可能会有很大帮助;我用谷歌搜索和 child process API docs 都没有取得多大成功

最佳答案

再次仔细检查 child_process.spawn 上的文档。第一个参数应该只是要运行的命令,第二个参数是参数:

var npm = spawn('npm', ['install'], { cwd: projectPath });

关于node.js - Node JS - child_process spawn ('npm install')在 Grunt 任务中导致 ENOENT 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20156067/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com