当前位置: 首页 > 知识库问答 >
问题:

Grunt任务中的节点js-child_process spawn('npm install')导致ENOENT错误

夏令秋
2023-03-14

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

我遇到的问题是child_process。如果在grunt任务中运行以下命令,并且npm install spawn命令当前被注释掉,则会出现spawn ENOENT错误:

    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);
        });
   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
// var spawnProcess = spawn('npm install', {'cwd': projectPath});
// var spawnProcess = spawn('npm install', [], {'cwd': projectPath});

任何关于这个错误的帮助都可能会有很大的帮助;我在谷歌搜索它和子进程API文档方面都没有取得多大的成功

共有1个答案

暨鹭洋
2023-03-14

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

var npm = spawn('npm', ['install'], { cwd: projectPath });
 类似资料:
  • 我一直试图在我的本地机器上构建一个nodejs项目,当我从终端构建它时,它会抛出一串文本,其中的最后一点是下面的错误消息: 如果你能提供一些见解,我将非常感激!

  • 问题内容: 在angularjs中,我们将参数作为依赖项注入传递。例如, 所以当它缩小时,它变成 现在,a,b,c,d将不会被角度和整个代码分别解释为$ scope,$ rootScope,$ location和$ http无法工作。为此,angularjs提供了一种解决方案,即 我们可以使用上述语法注入不同的依赖项。直到我没有使用一些自定义的角度服务作为依赖项,此方法都有效。例如 如果我有类似的

  • 我试图使用node连接mongodb。js。我偶然发现了一个问题。我正在得到要求(…)。pure不是函数错误。我试图使用这个网站上的确切代码“https://mongodb.github.io/node-mongodb-native/api-generated/collection.html“我的代码如下所示。 请让我知道你的建议。

  • 我目前正在尝试开发一个模块,允许节点从命令行运行Grunt任务。此节点模块全局安装: 目标是“Grunt”命令的使用对用户是透明的。为了更好地解释我的方法,请举一个使用我的节点模块的简单示例: 在本例中,我的模块将源目录复制到目标目录。 不幸的是,当我运行任务Grunt时,我的节点模块向我指出,“demo app”目录中没有文件“Gruntfile.js”。但是,该文件应该由我的节点模块在其自己的

  • 问题内容: 有人在Grunt上使用了节点检查器进行应用程序调试吗?如果不是,您能推荐基于Grunt的应用程序的调试工具吗? 我正在为服务器端应用程序使用nodejs,并且我有Grunt来使用分离的任务(这是因为用户可以单独执行任务)。 问题答案: 要在调试中运行grunt,您需要将grunt脚本显式传递给节点: 并在任务中添加一行。然后将使用调试工具打开浏览器。 编辑2014年2月28日 添加了命

  • 问题内容: 错误是什么意思? 此代码在我的测试文件中有效: 但是当我在Express App中使用该功能时,出现错误: 为什么它在我的测试中而不在我的应用程序中起作用? 问题答案: 我相信问题是Express-sql- session。我现在遇到同样的问题。我认为有人正在处理以下内容:NodeJS在MAC上运行,并且在centOS上部署时发生错误 也检查一下:https : //github.co