Webpack在本地工作但不在AWS Server上工作

时间:2017-09-27 07:06:21

标签: node.js reactjs amazon-web-services webpack webpack-2

我正在尝试将我的应用程序部署到AWS EC2实例。在我的本地环境中,我可以在运行webpack时捆绑所有内容。在我的AWS服务器上,我克隆了我的仓库,但是当我运行webpack时,我得到了 SyntaxError: Unexpected token import

我刚检查过,我的本地和AWS服务器都运行相同的NPM(5.3.0)和Node(8.6.0)版本,以及webpack版本(webpack -g)。

我有.babelrc:

{
  "presets": ["react", "es2015"]
}

webpack.config.babel.js:

import path from 'path';
import nodeExternals from 'webpack-node-externals';

const client = {
  entry: {
    js: './src/app-client.js',
  },
  output: {
    path: path.join(__dirname, 'src', 'static', 'js'),
    filename: 'bundle.js',
  },
  module: {
    rules: [
      {
        test: path.join(__dirname, 'src'),
        use: {
          loader: 'babel-loader',
          options: 'cacheDirectory=.babel_cache',
        },
      },
    ],
  },
};
export default [client];

错误发生在webpack.config.babel.js的第一行

/home/ec2-user/FB/webpack.config.babel.js:1
(function (exports, require, module, __filename, __dirname) { import path from 'path';
                                                              ^^^^^^

SyntaxError: Unexpected token import

为什么它在本地运行良好而不在AWS上运行?有关如何修复的任何想法?谢谢。

PS:我的开发机器是macOS,服务器是Amazon linux

1 个答案:

答案 0 :(得分:1)

将其替换为

import path from 'path';
import nodeExternals from 'webpack-node-externals';

有了这个

var path    = require('path');
var nodeExternals  = require('webpack-node-externals');

这个

export default [client];

有了这个

module.exports = client;

还要确保本地计算机上安装的Webpack版本与AWS服务器上的版本相同。

此外,我认为您在.babelrc文件中也缺少预设

{
  "presets" : ["es2015", "react", "stage-2"] 
}