Javascript 遍历节点中的目录(Grunt)
在构建一个应用程序时有一个奇怪的问题 基本上,我希望在grunt任务本身中使用node_模块。要做到这一点,我想向上遍历一个级别,然后向下遍历节点模块,以专门调用它们的一个文件 最初,我想这样做: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
../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) {});