gpt4 book ai didi

node.js - 如何将此目录包含在 $PATH 环境变量中?

转载 作者:太空宇宙 更新时间:2023-11-04 01:06:31 27 4
gpt4 key购买 nike

我正在为 Github's Atom 构建一个包编辑器和我遇到了一个挑战,试图让子进程使用 Node 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
)

在控制台中,我得到:

enter image description here

Atom 内置了一个 Web 检查器,您实际上可以看到 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 目录中创建了指向 Node 的符号链接(symbolic link),并且它现在正在工作。现在我试图让 Node 使用 fs.symlink 为我创建符号链接(symbolic link),但这似乎不起作用。

最佳答案

总而言之,问题在于 Atom 使用启动时的 PATH。因此,到 Node 的路径和到 mrt 的路径不包含在 Atom 的路径中。当 Atom 讨论论坛上有人指出 Atom 的 Class BufferedNodeProcess 时,我找到了解决方案。 。在回答时,该类有一个小错误,所以我无法使用它 - Github 团队工作得很快,如果它在接下来的几天内得到修复,我不会感到惊讶。不过,我能够使用一些代码来获取 Atom 的环境。另外,我最终使用了 node's spawn method而不是执行,因为这就是 BufferedNodeProcess 使用的。另外,您可以读取标准输出的每一行。

options =
cwd: atom.project.getPath()

options.env = Object.create(process.env) unless options.env?

options.env["ATOM_SHELL_INTERNAL_RUN_AS_NODE"] = 1
node = (if process.platform is "darwin" then path.resolve(process.resourcesPath, "..", "Frameworks", "Atom Helper.app", "Contents", "MacOS", "Atom Helper") else process.execPath)

mrt = spawn(node, [
"/usr/local/lib/node_modules/meteorite/bin/mrt.js"
"add"
"iron-router"
], options )

mrt.stdout.on "data", (data) ->
console.log "stdout: " + data
return

mrt.stderr.on "data", (data) ->
console.log "stderr: " + data
return

mrt.on "close", (code) ->
console.log "child process exited with code " + code
return

关于node.js - 如何将此目录包含在 $PATH 环境变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22436962/

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