Javascript 使用npm终端的npm脚本奇怪行为

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

我的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"
}
我能够执行
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,而是根文件夹。所以这是另一种选择