Javascript 使用npm终端的npm脚本奇怪行为
我的package.json中有这个Javascript 使用npm终端的npm脚本奇怪行为,javascript,node.js,npm,Javascript,Node.js,Npm,我的package.json中有这个 "devDependencies": { "chromedriver": "^2.37.0", "geckodriver": "^1.11.0", "nightwatch": "^0.9.20", "selenium-server": "^3.11.0" }, "scripts": { "e2e": "nightwatch -c tests/nightwatch.conf.js -e chrome" } 我能够执行n
"devDependencies": {
"chromedriver": "^2.37.0",
"geckodriver": "^1.11.0",
"nightwatch": "^0.9.20",
"selenium-server": "^3.11.0"
},
"scripts": {
"e2e": "nightwatch -c tests/nightwatch.conf.js -e chrome"
}
我能够执行npm运行e2e
但是在我的终端中,当我执行节点nightwatch-c测试/nightwatch.conf.js-e chrome
时,我得到了这个错误
Error: Cannot find module 'C:\Users\James\Documents\sample_project\nightwatch'
只是好奇,有什么问题吗?我怀疑我是否知道npm和node现在是如何工作的。是否在全球范围内安装了
nightwatch
模块?如果没有,则首先使用npm install nightwatch-g
全局安装此模块。由于在CLI命令中使用此模块,因此必须在系统中全局安装此模块
有时npm缓存可能会出现问题。尝试使用以下方法清理npm缓存:
npm缓存验证
npm缓存清理--强制执行
npm缓存清除-强制执行
然后您可以再次运行npm install
和npm install nightwatch-g
,以确保所有模块都已安装
此外,您可以尝试在命令中使用--verbose
,如:
node nightwatch.js --verbose
查看输出,这可能有助于调试问题。当您执行“节点夜视”时,它应该进入node_modules文件夹并查找夜视,而不是在根目录中查找。
您可以在node_模块中剪切nightwatch文件夹,并将其移动到与package.json相同的目录中。试试看 你是否安装了npm?这是windows的一个问题,你必须指定绝对路径try
node_modules/.bin/nightwatch-c tests/nightwatch.conf.js-e chrome
,因为安装了二进制文件。它从npm-run
开始工作的原因是npm-run
包括node\u-modules/.bin
到路径。因为nightwatch
将根据软件包安装实际位于node\u-modules/.bin
中。使用npm run
(脚本就是这样发生的)会发现这一点。正如node\u modules/.bin/nightwatch-c tests/nightwatch.conf.js-e chrome
一样。这就是这里实际发生的事情,在之前的回答中肯定已经多次提到过。她已经在package.json中有了nightwatch,所以如果她没有安装,她可以直接执行“npm安装”来安装模块already@AmirHosseinRd对的如果我没有安装npm,我将无法运行nightwatch,这是个坏主意,因为如果我在服务器上安装npm会怎么样?它将有重复的nightwatch文件夹我同意这是一种不好的做法,但不知何故,它没有重定向到node_模块文件夹以查找nightwatch,而是根文件夹。所以这是另一种选择