我正在尝试在NodeJS中生成一个访问我的主文件夹的进程,并且看不到,以使下面的任何一个选项工作。
var spawn = require('child_process').spawn,
options = {stdio: 'inherit', env: process.env};
spawn('ls', ['~/'], options);
spawn('ls', ['$HOME'], options);
输出
ls: ~/: No such file or directory
ls: $HOME: No such file or directory
我已经确认options.env.HOME
已正确设置,不知道我做错了什么?
更新
所以这就是我最终做的工作(使用script
代替ls
):
spawn('script', [process.env.HOME], options);
然后,在我的剧本里面:
#!/usr/bin/env bash
export HOME=$1
我仍然不明白为什么options.env.HOME
似乎无法正常工作。
答案 0 :(得分:1)
process.env.HOME就是你想要的。像这样使用它:
var spawn = require('child_process').spawn,
options = {stdio: 'inherit'};
var ls = spawn('ls', [process.env.HOME]);
ls.stdout.on('data', function(data){
console.log(String(data));
});
ls.stderr.on('data', function(data){
console.log(String(data));
});
然后,您可以在调用节点脚本时在shell中设置HOME:
HOME='/tmp'; node ls.js
或者,您不必重载HOME。要使用您喜欢的任何变量,请先将其导出,然后通过process.env。:
访问它export FOO='/tmp'; node ls.js