我正在尝试将并行外壳与Windows上的节点项目一起使用,以同时运行两个进程。
这是我的package.json文件的脚本部分:
"scripts": {
"start": "npm run watch:all",
"test": "echo \"Error: no test specified\" && exit 1",
"lite": "lite-server",
"scss": "node-sass -o css/ css/",
"watch:scss": "onchange \"css/*.scss\" -- npm run scss",
"watch:all": "parallelshell \"npm run watch:scss\" \"npm run lite\""
}
当我运行命令npm start
时,我得到以下错误日志:
TypeError [ERR_INVALID_ARG_TYPE]: The "options.cwd" property must be of type string. Received type function
at normalizeSpawnArguments (child_process.js:420:11)
at spawn (child_process.js:522:38)
at C:\Users\Daniel\Documents\development\online_classes\coursera_uhk_web_dev\Bootstrap4\conFusion\node_modules\parallelshell\index.js:104:17
at Array.forEach (<anonymous>)
at Object.<anonymous> (C:\Users\Daniel\Documents\development\online_classes\coursera_uhk_web_dev\Bootstrap4\conFusion\node_modules\parallelshell\index.js:100:6)
at Module._compile (internal/modules/cjs/loader.js:702:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
at Module.load (internal/modules/cjs/loader.js:612:32)
at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
at Function.Module._load (internal/modules/cjs/loader.js:543:3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! confusion@1.0.0 watch:all: `parallelshell "npm run watch:scss" "npm run lite"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the confusion@1.0.0 watch:all script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
我的语法有问题吗?我可以分别运行命令npm run watch:scss
和npm run lite
,它们可以正常工作,但是我无法运行parallelshell命令。
谢谢!
答案 0 :(得分:8)
尝试将并行Shell版本从3.0.2降级到3.0.1
根据该语句,这只是一个临时修复。
https://github.com/darkguy2008/parallelshell/issues/57
下面是降级 parallelshell 的命令行语法:
sudo npm uninstall --save-dev parallelshell@3.0.2
sudo npm install --save-dev parallelshell@3.0.1
对我有用。
希望这会有所帮助,并告诉我们。
答案 1 :(得分:5)
parallelshell在每次使用时都会出现活动错误。代替并机,这里的替代方法是使用 npm-run-all 开发依赖。
安装npm-run-all
npm install --save-dev npm-run-all
然后在如下所示的package.json脚本中进行主动更改。
"scripts": {
"start": "npm run dev",
"test": "echo \"Error: no test specified\" && exit 1",
"lite": "lite-server",
"scss": "node-sass -o css/ css/",
"watch:scss": "onchange \"css/*.scss\" -- npm run scss",
"dev": "npm-run-all -p watch:scss lite"
}
答案 2 :(得分:1)
在我看来,这是正确的,您可以使用双引号内的单引号代替转义双引号。
不确定是否会有所作为。
"watch:all": "parallelshell 'npm run watch:scss' 'npm run lite'"
答案 3 :(得分:1)
在您的 node_modules / parallelshell / index.js:105 文件中更改一行
来自:cwd: process.versions.node < '8.0.0' ? process.cwd : process.cwd(),
收件人:cwd: parseInt(process.versions.node) < 8 ? process.cwd : process.cwd(),
答案 4 :(得分:1)
这是由于 npm 与 parallelshell 版本不兼容造成的。
尝试使用以下方法将其降级到 3.0.1:
npm i --save-dev parallelshell@3.0.1
100% 为我工作。
答案 5 :(得分:0)
对于MAC和Windows计算机而言是不同的。 MAC上的用户单引号,Windows上的“ \” \ 还可以降级到3.0.1的parallelshell以使用\“
答案 6 :(得分:0)
我更改为同时使用 包,并且在win64上对我来说效果很好,其中提到的方法在replaceAll(String regex, String replacement)
中。
我只是简单地使用
“ watch:all”:“同时\” npm run watch:scss \“ \” npm run lite \“”
替换
“ watch:all”:“ parallelshell \” npm run lite:“ scss \” \“ npm run lite \”“
答案 7 :(得分:0)
所有正确无误,可以在Windows操作系统上运行。只需尝试安装parallelshell@3.0.1:
npm install --save-dev parallelshell@3.0.1
,然后再次致电npm start
。
答案 8 :(得分:0)
这是一个常见问题,无法使用npm审核修复程序解决。您所要做的就是将并行Shell的实际index.js文件复制到您的node_modules目录中。
因此,下面是说明:
1.转到https://raw.githubusercontent.com/darkguy2008/parallelshell/master/index.js
2.在此处复制内容。
3.现在转到您项目的目录,它可能类似于/project/node_modules/parallelshell/index.js
4.在index.js内部,将内容替换为您在步骤1中从链接复制的内容。
5.保存文件并退出。
希望此修复程序对您有用。
答案 9 :(得分:0)
如果在更改index.js或降级到3.0.1版本后仍然遇到错误,则更好的选择是使用npm-run-all