npm 运行 start 不会在不同 OS 旁边找到 node_modules 文件夹 Windows

npm run start won't find node_modules folder on different OS aside Windows

我在Windows10上用Hapi做了一个node JS应用,在本地测试后,脚本start会运行没有任何问题。这是 package.json

中的启动脚本
"scripts": {
"start": "nodemon  -e * ./src/server.js"
} 

我正在尝试在 Centos 7 中部署此应用程序。从 github 克隆后,设置 postgreSQL 数据库和 Table,设置 .env 文件,当我 运行 npm run start 命令,控制台会弹出这样的错误(错误来自 AWS 上的 Ubuntu 实例,但错误在每个基于 linux 的 OS)

[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 运行ning Ubuntu 和 AMI 2 以及我的另一台 Windows 10 PC 上复制该问题。在 Windows 10 日,应用程序会在 运行 执行上述命令后轻松 运行。在每个基于 linux 的 OS 上,它都会 return 相同的错误。当我尝试使用 node ./src/server.js 运行 时,该应用程序将启动。

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

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

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