【发布时间】:2014-04-21 15:08:34
【问题描述】:
我正在为Github's Atom 编辑器构建一个包,我遇到了一个挑战,试图让一个子进程使用节点 js 执行。我很确定问题在于 Atom 运行的环境不包含 mrt 脚本的路径。所以当我从我的包中运行它时:
exec = require("child_process").exec
child = undefined
child = exec("/usr/local/bin/mrt add iron-router", { cwd: path },(error, stdout, stderr) -
console.log "stdout: " + stdout
console.log "stderr: " + stderr
console.log "exec error: " + error if error isnt null
return
)
在控制台中,我得到:
Atom 内置了一个网络检查器,您实际上可以看到 atom 包含的路径。因此,当我转到 Atom 的控制台并输入:process.env.PATH 时,它会显示路径:/usr/bin:/bin:/usr/sbin:/sbin。所以我需要让 atom 知道那个 mrt 脚本的路径。有谁知道我该怎么做?
我昨天也联系了Atom's discussion forum,但尚未提出解决方案。
编辑:
我还应该注意,执行 mrt 包安装程序的正常命令是 mrt add package-name,但正如 Atom's discussion forum 所建议的那样,我一直在使用完整路径。
编辑 2:
我已经在我的/usr/bin 目录中创建了指向节点的符号链接,现在它正在工作。现在我正在尝试让节点使用 fs.symlink 为我创建符号链接,但这似乎不起作用。
【问题讨论】:
-
尝试执行
which mrt会得到什么结果? -
@Phoenix 我得到了:
/usr/local/bin/mrt
标签: node.js path environment-variables