Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 遍历节点中的目录(Grunt)_Javascript_Node.js_Directory_Gruntjs_Traversal - Fatal编程技术网

Javascript 遍历节点中的目录(Grunt)

Javascript 遍历节点中的目录(Grunt),javascript,node.js,directory,gruntjs,traversal,Javascript,Node.js,Directory,Gruntjs,Traversal,在构建一个应用程序时有一个奇怪的问题 基本上,我希望在grunt任务本身中使用node_模块。要做到这一点,我想向上遍历一个级别,然后向下遍历节点模块,以专门调用它们的一个文件 最初,我想这样做: ../node_modules/github-changes/bin/index.js 但是,我得到以下错误: Warning: Command failed: /bin/sh: 1: ../node_modules/github-changes/bin/index.js: not found Us

在构建一个应用程序时有一个奇怪的问题

基本上,我希望在grunt任务本身中使用node_模块。要做到这一点,我想向上遍历一个级别,然后向下遍历节点模块,以专门调用它们的一个文件

最初,我想这样做:

../node_modules/github-changes/bin/index.js
但是,我得到以下错误:

Warning: Command failed: /bin/sh: 1: ../node_modules/github-changes/bin/index.js: not found
Use --force to continue.
所以,现在我有一个关于使用Node的_dirname变量的技巧,但它不是很漂亮:

var dirHack = __dirname.replace("/tasks", ""), // Terrible hack, need to fix
       ghC = dirHack + '/node_modules/github-changes/bin/index.js';
这很有效,但我想避免

你可以看到这条线


导致错误的原因是什么?我在这里遗漏了什么吗?

如果
github changes
是一个依赖项,您可以使用
ghC=require.resolve('github-changes/bin/index.js')
解析包中的文件路径

但您之所以会出现这个错误,是因为您试图以shell脚本的形式运行该文件,而事实并非如此。您需要使用node运行它。查找节点可执行文件路径的最简单方法是
process.execPath
。看

以下是一个例子:

var exec = require('child_process').exec;
var ghC = require.resolve('github-changes/bin/index.js');
exec(process.execPath + ' ' + ghC, function(error) {});