我在elasticbeanstalk部署了一个节点js app。已安装且符号链接的节点,npm和webpack。但是当运行npm run build-prod
时,它本身会调用脚本webpack --config /var/app/current/webpack.prod.config.js
。退出状态-2出现以下错误。如果我直接运行webpack命令也会发生同样的情况。我正在寻找解决方案。
[2016-07-26T06:57:36.301Z] INFO [9731] - [Application update app-5c81-160726_122417@24/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_site_web/Command 06_npm_run_build_prod] : Activity execution failed, because:
> site-web@1.0.0 build-prod /tmp/deployment/application
> webpack --config /var/app/current/webpack.prod.config.js
npm ERR! Linux 4.4.14-24.50.amzn1.x86_64
npm ERR! argv "/opt/elasticbeanstalk/node-install/node-v4.4.6-linux-x64/bin/node" "/bin/npm" "run" "build-prod"
npm ERR! node v4.4.6
npm ERR! npm v2.15.5
npm ERR! file sh
npm ERR! path sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn sh
npm ERR! site-web@1.0.0 build-prod: `webpack --config /var/app/current/webpack.prod.config.js`
npm ERR! spawn sh ENOENT
npm ERR!
npm ERR! Failed at the site-web@1.0.0 build-prod script 'webpack --config /var/app/current/webpack.prod.config.js'.
npm ERR! This is most likely a problem with the site-web package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! webpack --config /var/app/current/webpack.prod.config.js
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs site-web
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!
npm ERR! npm owner ls site-web
npm ERR! There is likely additional logging output above.
npm ERR! Linux 4.4.14-24.50.amzn1.x86_64
npm ERR! argv "/opt/elasticbeanstalk/node-install/node-v4.4.6-linux-x64/bin/node" "/bin/npm" "run" "build-prod"
npm ERR! node v4.4.6
npm ERR! npm v2.15.5
npm ERR! code ELIFECYCLE
容器配置文件:
container_commands:
01_node_symlink:
command: "ln -sf `ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin/node /bin/node"
02_npm_symlink:
command: "ln -sf `ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin/npm /bin/npm"
03_npm_install_global_packages:
command: "npm install webpack webpack-cli -g"
04_webpack_symlink:
command: "ln -sf `ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin/webpack /bin/webpack"
#05_webpack_run_build_prod:
#command: "webpack --config /var/app/current/webpack.prod.config.js --progress --colors"
06_npm_run_build_prod:
command: "npm run build-prod"
package.json中的脚本
"scripts": {
"build": "webpack --config webpack.local.config.js --progress --colors",
"build-local": "webpack --config webpack.prod.config.js --progress --colors",
"build-prod": "webpack --config /var/app/current/webpack.prod.config.js",
"server": "node app.js",
"dev-server": "node dev-app.js"
}
当我取消注释05直接运行webpack命令时,它以错误Error: "/var/app/current/site-web/static/assets/app/index.js" is not in the SourceMap.
构建脚本在本地成功,但在生产的所有方式上都被阻止。 无法弄清楚如何运行webpack命令在AWS beanstalk环境中构建JS。是不是构建JS文件的理想方式?
节点:4.4.6 npm:2.15.5 webpack:最新
答案 0 :(得分:3)
我还不熟悉弹性beanstalk并且自己也有类似的问题,但我注意到你的符号链接节点,npm等的任务是container_commands
的形式。
According to the official docs,"它们在应用程序和Web服务器设置完毕后运行应用程序版本文件,但在部署应用程序版本之前运行。"
也许尝试使用commands:
代替container_commands:
。查看我分享的链接。
可能这些命令在应用程序和Web服务器已经设置之后才运行,这可能是为什么它可能不适合您?
同样,我对弹性豆茎仍然是新手,但也许这可能有所帮助。
答案 1 :(得分:1)
我遇到了全局npm安装问题(在我的案例中是react-scripts)。我作为一种解决方法做的是安装package.json
中声明的依赖包,然后在/tmp/deployment/application/node_modules/.bin
配置文件中对其进行符号链接(位于EC2上的.ebextensions
):
03_react_scripts_symlink:
command: "ln -sf /tmp/deployment/application/node_modules/.bin/react-scripts /bin/react-scripts"
04_npm_run_build_prod:
command: "sudo npm run build"
答案 2 :(得分:1)
我认为这种方法是错误的。 Webpack
和Webpack-cli
是package.json
的devDependencies。
您应该将env变量设置为NPM_USE_PRODUCTION=false
,以便EB也安装devDependencies
。
在此处查看更多信息:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/nodejs-platform-packagejson.html
答案 3 :(得分:-1)
最后,我设法在staging目录下运行构建脚本。它不是一个永久的解决方案,但它有效。
package classandobjects;
public class MainClass {
public static void main(String[] args) {
Classes friend1 = new Classes();
friend1.name="yusuf";
friend1.age=27;
friend1.country="Nigeria";
friend1.department="EE";
friend1.gender="male";
Classes friend2 = new Classes();
friend1.name="mathew";
friend1.age=30;
friend1.country="Nigeria";
friend1.department="EE";
friend1.gender="male";
FavPlayers player = new FavPlayers();
player.pname="J.Terry";
player.position="C.Back";
player.gaols=38;
player.awards="25-awards";
FavPlayers player1 = new FavPlayers();
player1.pname="F.Lampard";
player.position="Midfield";
player.gaols=50;
player.awards="10-awards";
Car model = new Car();
model.modelName="Honda Civic";
model.color="Ash-color";
model.Doors="4-doors";
model.price=900000;
System.out.println("below is my friend information");
System.out.println(friend1.name);
System.out.println(friend1.age);
}
}