如何在Node脚本中调用WSL命令并与Windows CMD命令链式执行
问题解决方案
错误根因
报错是因为PowerShell调用wsl命令时,单引号的解析规则和WSL内的zsh不兼容,导致引号匹配失败。
正确写法
这里提供两种兼容性较好的实现方案:
方案1:拆分为两次wsl调用(无需额外转义,优先推荐)
"scripts": { "start": "wsl sudo service docker start && wsl docker-compose up -d && nodemon server.js --config nodemon.json" }
方案2:合并为单条wsl调用,使用转义双引号包裹命令
"scripts": { "start": "wsl \"sudo service docker start && docker-compose up -d\" && nodemon server.js --config nodemon.json" }
可选优化
- 若执行时卡住需要输入sudo密码,可以在WSL终端执行
sudo visudo,在文件末尾添加一行:你的WSL用户名 ALL=(ALL) NOPASSWD: /usr/sbin/service docker start,保存后即可免密启动Docker服务。 - 若提示找不到docker-compose命令,可以把命令替换为docker-compose的绝对路径,例如
/usr/local/bin/docker-compose up -d。
内容的提问来源于stack exchange,提问作者Tom M
相关产品推荐
相关产品推荐

