Bash的stdin和Node的stdin流之间的区别

时间:2018-10-01 15:39:31

标签: node.js bash npm stdin

我正在尝试使用Node脚本npm login进入私有注册表。在bash中,以下命令像超级按钮一样运行:

echo -e "testuser\ntestpassword\ntest@test.test\n" \
    | npm login --registry=http://localhost:4873/

但是,我无法使用Node脚本以相同的方式调用npm。我尝试过:

const spawn = require("child_process").spawn;

const childProcess = spawn("npm", ["login", "--registry=http://localhost:4873"]);

childProcess.stdin.write("testuser\ntestpassword\ntest@test.test\n");
childProcess.stdout.pipe(process.stdout);
childProcess.stderr.pipe(process.stderr);

npm进程收到用户名,但在询问密码时停止。我不明白使用bash或使用Node流将"testuser\ntestpassword\ntest@test.test\n"字符串传递给进程之间有什么区别。另外,可行的实现会很好。

谢谢!

0 个答案:

没有答案