我正在尝试将我的应用程序上传到Elastic Beanstalk,但是npm安装在node-pre-gyp安装--fallback-to-build上失败了。我尝试过各种版本的节点但没有用。它似乎试图获得一个不存在且不需要的Linux软件包,它只需要OSX(它工作正常)。
解决方案似乎是使用--no-optional标志运行npm install,但我找不到使用此标志进行EB运行安装的方法。
此包也似乎是karma的依赖,我只在package.json文件中作为dev依赖。我可以看到EB正在使用--production标志进行安装,所以我不知道它首先尝试安装它。
非常感谢有关如何解决此问题的任何想法。
> Running npm with --production flag
> Failed to run npm install. Snapshot logs for more details.
> Traceback (most recent call last):
> File "/opt/elasticbeanstalk/containerfiles/ebnode.py", line 695, in <module>
> main()
> File "/opt/elasticbeanstalk/containerfiles/ebnode.py", line 677, in main
> node_version_manager.run_npm_install(options.app_path)
> File "/opt/elasticbeanstalk/containerfiles/ebnode.py", line 136, in run_npm_install
> self.npm_install(bin_path, self.config_manager.get_container_config('app_staging_dir'))
> File "/opt/elasticbeanstalk/containerfiles/ebnode.py", line 180, in npm_install
> raise e
> subprocess.CalledProcessError: Command '['/opt/elasticbeanstalk/node-install/node-v4.6.1-linux-x64/bin/npm',
> '--production', 'rebuild']' returned non-zero exit status 1
> (ElasticBeanstalk::ExternalInvocationError)
> caused by: + /opt/elasticbeanstalk/containerfiles/ebnode.py --action npm-install
> npm WARN package.json Room@1.0.0 No repository field.
> npm WARN package.json Room@1.0.0 No README data
> npm WARN package.json Room@1.0.0 No license field.
>
> > uglifyjs-webpack-plugin@0.2.1 postinstall /tmp/deployment/application/node_modules/uglifyjs-webpack-plugin
> > node lib/post_install.js
>
>
> > fsevents@1.0.15 install /tmp/deployment/application/node_modules/karma/node_modules/chokidar/node_modules/fsevents
> > node-pre-gyp install --fallback-to-build
>
> node-pre-gyp ERR! Tried to download: https://fsevents-binaries.s3-us-west-2.amazonaws.com/v1.0.15/fse-v1.0.15-node-v46-linux-x64.tar.gz
答案 0 :(得分:4)
如果有其他人遇到此问题,我的问题出现在我的.gitignore中,我有node_modules
而不是node_modules/
,并且该文件夹已被跟踪和部署。从部署中删除node_modules文件夹解决了这个问题。
答案 1 :(得分:3)
在查看更多详细信息部分时,我发现了这一点,这是bcrypt
库中的错误
因此,我删除了该库并安装了bcryptjs库,然后再次部署了该库,然后成功部署了该库。因此,当存在不赞成使用的库而不支持库时,可能会出现这种错误。
答案 2 :(得分:1)
首先,前往
检查您的日志Elastic Beanstalk.
Logs
Request Logs
并选择Last 100 Lines
或Full Log.
是时候修复它了!
如果它与gyp WARN
、gyp WARN EACCESS
或gyp ERR
相关,则在您的项目的根目录中创建一个名为.npmrc 的文件。在此文件中,添加 unsafe-perm=true
。这将强制 npm 以 root 身份运行 node-gyp。
如果错误与某个特定的 npm 包安装失败有关,请考虑使用该包的替代方案。
一切顺利!!