我有一个节点脚本,它的工作是构建我构建的应用程序。它创建文件和文件夹,然后运行一系列节点命令。一切都很完美。以下是运行的命令:
const postInstCmds = [
'npm init -y',
'npm install http-server --save-dev',
'npx add-npm-scripts server "http-server"',
'npm run server'
];
postInstCmds.forEach(cmd => execSync(cmd, {cwd: appDir}));
console.log('Done!');
然而,在终端,它似乎挂在倒数第二位( npx
)命令,即使它确实运行最终 npm run server
命令(因为创建的应用程序在localhost:8080上可用)。大概是因为同样的原因,我从来没有看到我的“完蛋!”日志这就是我所看到的:
如何让终端在不挂起键盘的情况下完成命令 npx
一个?
1条答案
按热度按时间pbpqsu0x1#
您永远不会看到“完成”,因为最后一个命令永远不会退出。倒数第二个命令实际上是退出的。我们知道这一点是因为,否则最后一个命令将无法运行(因为您正在使用
execSync()
这将一直阻止,直到命令退出),您将无法运行服务器。似乎正在发生的是,您只看到了stderr而不是stdout。在没有看到其余代码的情况下,我无法确切说明发生这种情况的原因,但一个潜在的简单解决方法可能是指定所有stdio都应该被继承。