【问题标题】:How to fix Error Modules Not found on Node/npm/pm2 in Linux Server?如何修复在 Linux 服务器的 Node/npm/pm2 上找不到错误模块?
【发布时间】:2021-06-22 00:20:18
【问题描述】:

大家好 Stackoverflow!

我在安装了 pm2 的 Linux 服务器上托管了一个 Web 应用程序。我在日志中遇到了以前从未见过的错误。错误如下:

1|joo-api  |     at tryModuleLoad (module.js:505:12)
1|joo-api  |     at Function.Module._load (module.js:497:3)
1|joo-api  |     at Function.Module.runMain (module.js:693:10)
1|joo-api  |     at startup (bootstrap_node.js:188:16) code: 'MODULE_NOT_FOUND' }
1|joo-api  | { Error: Cannot find module '/srv/joo-api'
1|joo-api  |     at Function.Module._resolveFilename (module.js:547:15)
1|joo-api  |     at Function.Module._load (module.js:474:25)
1|joo-api  |     at Object.<anonymous> (/usr/local/lib/node_modules/pm2/lib/ProcessContainerFork.js:27:21)
1|joo-api  |     at Module._compile (module.js:652:30)
1|joo-api  |     at Object.Module._extensions..js (module.js:663:10)
1|joo-api  |     at Module.load (module.js:565:32)
1|joo-api  |     at tryModuleLoad (module.js:505:12)
1|joo-api  |     at Function.Module._load (module.js:497:3)
1|joo-api  |     at Function.Module.runMain (module.js:693:10)
1|joo-api  |     at startup (bootstrap_node.js:188:16) code: 'MODULE_NOT_FOUND' }

/home/appadmin/.pm2/logs/joo-app-error.log last 15 lines:
0|joo-app  |     at tryModuleLoad (module.js:505:12)
0|joo-app  |     at Function.Module._load (module.js:497:3)
0|joo-app  |     at Function.Module.runMain (module.js:693:10)
0|joo-app  |     at startup (bootstrap_node.js:188:16) code: 'MODULE_NOT_FOUND' }
0|joo-app  | { Error: Cannot find module '/srv/joo-app'
0|joo-app  |     at Function.Module._resolveFilename (module.js:547:15)
0|joo-app  |     at Function.Module._load (module.js:474:25)
0|joo-app  |     at Object.<anonymous> (/usr/local/lib/node_modules/pm2/lib/ProcessContainerFork.js:27:21)
0|joo-app  |     at Module._compile (module.js:652:30)
0|joo-app  |     at Object.Module._extensions..js (module.js:663:10)
0|joo-app  |     at Module.load (module.js:565:32)
0|joo-app  |     at tryModuleLoad (module.js:505:12)
0|joo-app  |     at Function.Module._load (module.js:497:3)
0|joo-app  |     at Function.Module.runMain (module.js:693:10)
0|joo-app  |     at startup (bootstrap_node.js:188:16) code: 'MODULE_NOT_FOUND' }

现在 pm2 状态为错误

我试过 pm2 kill、restart、start、node update 和 pm2 update。一切都没有奏效。有人知道是什么原因造成的吗?

【问题讨论】:

  • 你用npm installpackage.json安装包了吗?
  • 我是用命令行安装的。那是几年前的事了。从那以后没有问题,直到出现。
  • 如何使用pm2 运行服务器? npm start 还是 pm2 start joo-app.js?如果使用npm start,请检查package.json - 'main' 字段或'scripts' : {'start' : 'here'}。在我的情况下,'start':'/bin/www' 发生类似的错误。
  • 我使用 pm2 start joo-api 和 pm2 start joo-app 运行它
  • 还是不行。您还有什么建议吗?

标签: javascript node.js linux vue.js node-modules


【解决方案1】:

这是为那些在 Windows 上开发然后在 Linux 机器上部署的人准备的。

如果你部署在一台 linux 机器上,它突然告诉你模块没有在任何地方找到,很可能是因为 requireimport字母大小写/em> 语句。

例如,如果您的文件名是 ErrorModule.js,但您不小心要求为“errorModule”,例如:

const ErrorModule = require('../errors/errorModule');

这在 Linux 上会失败,因为 linux 区分大小写。 它应该被导入为

const ErrorModule = require('../errors/ErrorModule');

现在,您可能想知道为什么当您在 Windows 机器上运行时它可以工作;这是因为 Windows 不区分大小写不区分大小写。您可以在 Windows 上要求具有错误字母大小写的文件,它仍然可以工作。虽然 linux 导入是区分大小写的敏感

我希望这篇文章能有所帮助。我也被类似的问题困扰了几个小时

【讨论】:

    【解决方案2】:

    您是否尝试过删除并重新安装 node_modules ?确保你也更新了服务器上的 package.json。

    【讨论】:

    • 还没有,但它会搞砸一切吗?我应该更新 package.json 的哪一部分?
    • 您从本地开发环境中获取 package.json,然后将其复制到服务器。 Npm 只安装标记为“依赖项”而不是“devDependencies”的包。我会尝试:rm -r -f node_modules 然后npm i
    • 最后,您可以将 node_modules 从本地复制到服务器。然后在app目录下cd,以pm2 start (yourServer.js)开头。
    猜你喜欢
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 2023-02-15
    • 2020-11-08
    • 1970-01-01
    相关资源
    最近更新 更多