npm 运行开始不会在不同的操作系统上找到node_modules文件夹,除了 Windows



我在Windows 10上使用Hapi制作了一个节点JS应用程序。在本地测试之后,脚本start将毫无问题地运行。这是包.json 中的启动脚本

"scripts": {
"start": "nodemon  -e * ./src/server.js"
} 

我正在尝试在Centos 7内部署此应用程序。从github克隆后,设置postgreSQL DB&表,设置.env文件,当我运行npm run start命令时,控制台会弹出这样的错误(错误取自AWS上的Ubuntu实例,但每个基于linux的操作系统的错误都是一样的(

[nodemon] starting `node node_modules nodemon.json package-lock.json package.json readme.MD src views /src/server.js`
internal/modules/cjs/loader.js:1032
throw err;
^
Error: Cannot find module '/home/ubuntu/application_nodejs/node_modules'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:1029:15)
at Function.Module._load (internal/modules/cjs/loader.js:898:27)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
[nodemon] app crashed - waiting for file changes before starting...

我试图在Heroku上复制这个问题,AWS EC2运行在Ubuntu&AMI 2和我的另一台Windows 10 PC在Windows 10上,运行上述命令后,该应用程序将轻松运行。在每一个基于linux的操作系统上,它都会返回相同的错误。当我尝试用node ./src/server.js运行它时,应用程序就会启动。

我的问题有什么解决办法吗?我怀疑这与文件/文件夹命名或启动脚本本身有关。但我还没有找到任何正确的解决方案。提前谢谢!

您需要引用*:nodemon -e "*" src/server.js

与Windows的cmd不同,Linux shell扩展通配符(正如您在实际运行的命令中所看到的,在错误上方(。在Windows中,扩展通配符取决于您调用的程序。由于这是您在nodemon的情况下想要的,因此它起到了作用;"偶然";在Windows上不转义星号,因为它对cmd没有任何特殊意义,但在Linux中,它会被扩展,这不是你想要的。

最新更新