AWS Elastic Beanstalk - 如何使用npm和webpack构建bundle JS

Bab*_*abu 10 javascript amazon-web-services node.js webpack amazon-elastic-beanstalk

我在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
Run Code Online (Sandbox Code Playgroud)

容器配置文件:

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"
Run Code Online (Sandbox Code Playgroud)

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"
  }
Run Code Online (Sandbox Code Playgroud)

当我取消注释05直接运行webpack命令时,它以错误结束 Error: "/var/app/current/site-web/static/assets/app/index.js" is not in the SourceMap.

构建脚本在本地成功,但在生产的所有方式上都被阻止.无法弄清楚如何运行webpack命令在AWS beanstalk环境中构建JS.是不是构建JS文件的理想方式?

node:4.4.6 npm:2.15.5 webpack:latest

Dan*_*nny 4

我对 Elastic beanstalk 仍然很陌生,并且自己也遇到类似的问题,但我注意到您的符号链接节点、npm 等任务采用container_commands.

根据官方文档,“它们在应用程序和 Web 服务器设置完毕并提取应用程序版本文件之后、但在部署应用程序版本之前运行。”

也许尝试使用commands:而不是container_commands:. 请参阅我分享的链接。

也许这些命令直到应用程序和 Web 服务器已经设置好之后才会运行,这就是为什么它可能不适合您?

再说一次,我对弹性豆茎还是新手,但这也许会有帮助。