2017-05-29 100 views
2

我有一个项目在Jenkins上成功构建,但是当我尝试使用AWS Codebuild构建时,它给出了一个插件错误。该项目基本上是一个NodeJS和ReactJS项目。我们不想迁移到Jenkins,因为我们无服务器,安装jenkins需要一个EC2实例。我们不想维护任何服务器。我曾尝试以下环境中的AWS codebuild:当我使用aws/codebuild/ubuntu-base:14.04 codebuild环境构建在詹金斯成功,但AWS-Codebuild给插件错误

aws/codebuild/ubuntu-base:14.04 
aws/codebuild/nodejs:6.3.1 
aws/codebuild/nodejs:7.0.0 
aws/codebuild/nodejs:4.4.7 

前四个我buildspec.yml的命令时,才会执行。否则,只有三条命令是我buildspec.yml

下面的部分是我的buildspec.yml

version: 0.1 

phases: 
    build: 
    commands: 
     - sudo apt-get update 
     - curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - 
     - sudo apt-get install -y nodejs 
     - sudo apt-get install -y build-essential 
     - npm install 
     - npm run dev 
     - aws s3 cp --recursive dist/ s3://$AWS_BUCKET_NAME/ --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers 

下面是AWS codebuild我的错误日志NPM运行期间

ERROR in 
Child html-webpack-plugin for "index.html": 
+ 3 hidden modules 

另外,我在Codebuild的npm安装过程中得到以下警告,但我在Jenkins中没有得到此警告

npm WARN deprecated [email protected]: This plugin is no longer maintained. Please use babel-plugin-react-transform with react-transform-hot-reload instead. 

下面是我webpack.config.js

var path = require('path'); 
var webpack = require('webpack'); 
var HtmlWebpackPlugin = require('html-webpack-plugin'); 
var FlowStatusWebpackPlugin = require('flow-status-webpack-plugin'); 

module.exports = { 
    entry: [ 
     './src/app/index.js' 
    ], 
    output: { 
     path: __dirname + '/dist', 
     filename: 'index_bundle.js' 
    }, 
    module: { 
     loaders: [ 
      { 
       test: /\.json$/, 
       loader: 'json' 
      }, 
      { 
       test: /\.js$/, 
       exclude: /(node_modules|test)/, 
       loaders: ["babel-loader"] 
      }, 
      { 
       test: /\.(css|scss)$/, 
       loaders: ['style', 'css', 'sass-loader'] 
      }, 
      { 
       test: /\.(png|woff|woff2|eot|ttf|svg)$/, 
       loader: 'url-loader', 
       options: { 
        limit: 100000, 
        name: 'assets/[hash].[ext]' 
       } 
      }, 
      { 
       test: /\.styl$/, 
       loader: 'style-loader!css-loader!postcss-loader!stylus-loader' 
      } 
     ] 
    }, 
    plugins: [ 
     new HtmlWebpackPlugin({ 
      template: __dirname + '/src/app/index.html', 
      filename: 'index.html', 
      inject: 'body' 
     }), 
     new webpack.ProvidePlugin({ 
      $: "jquery", 
      jQuery: "jquery" 
     }), 
     new webpack.DefinePlugin({ 
      "process.env": { 
       'NODE_ENV': JSON.stringify('dev') 
      } 
     }), 
     new FlowStatusWebpackPlugin({ 
      failOnError: true 
     }) 
    ], 
    devtool: 'source-map', 
    node: { 
     tls: "empty", 
     fs: "empty" 
    }, 
    resolve: { 
     root: path.resolve(__dirname), 
     alias: { 
      '~': 'src', 
     }, 
     extensions: ['', '.js', '.jsx'] 
    }, 
}; 
+0

嗨,只是检查,你希望在哪里主办的网站(出来的构建)?看看buildspec,我猜你会尝试在S3中托管它? – Rikusor

+0

是的,它在S3中托管。 @Riku – deosha

+1

Amazon S3不支持服务器端脚本。你不能在那里托管NodeJS代码。 http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html 这意味着你的版本只应该运行命令,把网站的最终完全静态版本,并上传这些文件到S3。意义例如npm run不应该是构建过程的一部分。 – Rikusor

回答

1
new HtmlWebpackPlugin({ 
    template: __dirname + '/src/app/index.html', 
    filename: 'index.js', 
    inject: 'body' 
}) 

filename选项应该是一个JavaScript文件?即:filename: index.js