无法在 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 中导入自定义模块

使用 xdomain 开发 DOJO 自定义模块

无法更新 installData 中的用户属性

自定义按钮视图:检测触摸向下/向上,快速,并回退拖动到 UIScrollView

我的自定义本机模块不在 NativeModules 对象中