无法在 AWS/nodejs 上运行自定义模块。退出并出现错误:找不到模块
Posted
技术标签:
【中文标题】无法在 AWS/nodejs 上运行自定义模块。退出并出现错误:找不到模块【英文标题】:Can't run custom module on AWS/nodejs. Exits with error: Cannot find module 【发布时间】:2020-03-04 00:32:27 【问题描述】:我想切换到 AWS elastic beanstalk 上 parse-server 模块的一个分支,但无论我尝试什么,当服务器尝试启动时都会出现此错误:
Error: Cannot find module 'parse-server'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
at Function.Module._load (internal/modules/cjs/loader.js:562:25)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object.<anonymous> (/var/app/current/index.js:64:21)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
原来的模块没有问题:
在 package.json 中:"parse-server": "3.10.0",
但这些都不起作用:
"parse-server": "https://github.com/andrewking0207/parse-server.git#appleAuth",
"parse-server": "andrewking0207/parse-server.git#appleAuth",
当我 ssh 到 ec2 实例时,模块安装在节点模块中。 我在这里想念什么?在我的机器上本地运行一切正常。
【问题讨论】:
【参考方案1】:您不能直接从 GitHub 分支安装,因为它没有在构建过程中创建的 lib
文件夹。不过有一个解决方法:
1 - 将你的 fork 克隆到你的机器上
2 - 从 .gitignore 文件中删除 lib 文件夹
3 - 运行npm install
4 - 运行npm build
5 - 将更改提交到本地 git
6 - 将提交推送到 GitHub 上的远程堡垒分支
然后您可以尝试再次安装它,它应该可以工作。我只是想说明这是一种解决方法,而不是使用 Parse Server 的推荐方法。如果您解释使用自己的 fork 想要实现的目标,我可以尝试就“正确”的完成方式提出建议。
【讨论】:
谢谢!!这成功了。我想知道,为什么叉子然后在本地运行? AWS 是否在做与运行“npm install”不同的事情?至于功能,这个分支修复了 Apple 登录的错误。它已经是一个拉取请求(github.com/parse-community/parse-server/pull/6416),但我等不及它成为主分支的一部分(如果没有修复,就无法提交到应用商店)。 AWS 正在运行 npm install 但您的 GitHub 存储库没有 lib 文件夹(因为它位于 gitignore 文件中)。在官方 repo 中,lib 文件夹被发送到 npm,AWS 从 npm 安装(而不是从 GitHub)。以上是关于无法在 AWS/nodejs 上运行自定义模块。退出并出现错误:找不到模块的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 aws nodejs sdk 创建 Redshift 表
无法使用 Jupyter 笔记本在 Python 中导入自定义模块