7

私はelasticbeanstalkにノードjsアプリケーションをデプロイしました。インストールされシンボリックリンクされたノードnpmとwebpack。しかし、それ自身がwebpack --config /var/app/current/webpack.prod.config.jsというスクリプトを呼び出すnpm run build-prodを実行しているとき。終了ステータス-2で次のエラーを取得します。 webpackコマンドを直接実行しても同じことが起こります。私は解決策を探しています。AWS Elastic Beanstalk - npmとwebpackを使用してバンドルJSを構築する方法

[2016-07-26T06:57:36.301Z] INFO [9731] - [Application update [email protected]/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_site_web/Command 06_npm_run_build_prod] : Activity execution failed, because: 
    > [email protected] 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! [email protected] build-prod: `webpack --config /var/app/current/webpack.prod.config.js` 
    npm ERR! spawn sh ENOENT 
    npm ERR! 
    npm ERR! Failed at the [email protected] 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 

コンテナの設定ファイル:package.jsonで

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" 

スクリプト

"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" 
    } 

そして、私はそれが終わる直接WebPACKのコマンドを実行している05のコメントを解除エラーError: "/var/app/current/site-web/static/assets/app/index.js" is not in the SourceMap.

ビルドスクリプトはローカルで成功していますが、プロダクションではすべての方法でブロックされています。 AWS beanstalk環境でJSをビルドするwebpackコマンドを実行する方法を理解できませんでした。 JSファイルを作成する理想的な方法ではありませんか?

ノード:4.4.6 NPM:2.15.5 のWebPACK:最新

+1

/の/ var /アプリ/現在のかもしれませWebPACKの.prod.config.jsファイルがありませんか? –

+0

ありがとうございます。私は 'eb deploy'を使ってコードを展開し、そこにあるファイルとビルドスクリプトを手動で実行できることを確認するためにsshを使います。 – Babu

答えて

2

は、私はまだElastic Beanstalkでの新たなんだと同様の問題を自分自身を持つが、私はなど、NPM、ノードのシンボリックリンクのためのあなたの仕事に気づきました、 container_commandsの形式です。

According to the official docs "アプリケーションとWebサーバーが設定され、アプリケーションバージョンファイルが抽出された後、アプリケーションバージョンが展開される前に実行されます。"

container_commands:の代わりにcommands:を使用してみてください。私が共有したリンクを参照してください。

これらのコマンドは、アプリケーションとWebサーバーがすでに設定されているまで実行されていないことがあります。

また、私は弾力のある豆の豆腐にまだ慣れていますが、おそらくそれが助けになるかもしれません。

+0

コマンドで試してみましたが、運はありません。 – Babu

+0

ところで、「デプロイされている」ということはどういう意味ですか?私はコンテナのコマンドは、アプリケーションのバージョンファイルが配置ディレクトリに配置された後に実行されると思います。これは、私がPython Django環境で動作する方法です。これは、container_commands内でmigrateコマンドを実行することです。 – Babu

+0

申し訳ありませんが、 "展開されています" – Danny

-1

最後に、ステージングディレクトリでビルドスクリプトを実行することができました。永続的な解決策ではありませんが、機能します。

05_webpack_run_build_prod: 
    command: "cd /tmp/deployment/application && sudo webpack --config webpack.prod.config.js --progress --colors" 
0

グローバルなnpmインストール(私の場合は反応スクリプト)に問題がありました。私は回避策としてやったことは.ebextensions configファイルで(EC2上/tmp/deployment/application/node_modules/.binに位置)package.jsonで宣言されているように依存パッケージをインストールし、それへのシンボリックリンクになった:

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" 
関連する問題