npm run start 在 Windows 之外的不同操作系统上找不到 node_modules 文件夹

Posted

技术标签:

【中文标题】npm run start 在 Windows 之外的不同操作系统上找不到 node_modules 文件夹【英文标题】:npm run start won't find node_modules folder on different OS aside Windows 【发布时间】:2021-08-20 07:54:41 【问题描述】:

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

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

我正在尝试在 Centos 7 中部署这个应用程序。从 github 克隆后,设置 postgreSQL DB & Table,设置 .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、在 Ubuntu 和 AMI 2 上运行的 AWS EC2 以及我的另一台 Windows 10 PC 上复制该问题。在 Windows 10 上,运行上述命令后,该应用程序将轻松运行。在每个基于 linux 的操作系统上,它都会返回相同的错误。当我尝试使用node ./src/server.js 运行它时,应用程序会启动。

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于npm run start 在 Windows 之外的不同操作系统上找不到 node_modules 文件夹的主要内容,如果未能解决你的问题,请参考以下文章

Vue报错:npm run start npm ERR! missing script: start

React Native开发之npm start加速

Next.js 中的 npm run dev 和 npm run start 有啥区别?

“npm run dev”和“npm start”之间的区别

json 并发脚本npm-run-all,静默模式npm start -s

反应:npm start 工作,npm run build 抛出 ELIFECYCLE 错误(errno 1)