Webpack 在本地工作,但不在 AWS 服务器上

Posted

技术标签:

【中文标题】Webpack 在本地工作,但不在 AWS 服务器上【英文标题】:Webpack working locally but not on AWS Server 【发布时间】:2018-03-08 13:34:43 【问题描述】:

我正在尝试将我的应用程序部署到 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】:

替换为

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

【讨论】:

谢谢,但没有帮助。两者 (3.5.6) 上的 Webpack 版本相同。 请看一下这个链接,github.com/gokulkrishh/how-to-setup-webpack-2也许你错过了什么。 同样在你的预设中,先添加 es2015 然后反应,因为它是按这个顺序编译的。看看更新的答案。 对我来说,它甚至无法在本地运行,我浏览了 Webpack 的文档,发现他们使用的是 require 而不是 import。我的猜测是 webpack 将所有代码编译为 es6,但它不会自己编译代码,即 webpack.demo.js 文件等。【参考方案2】:

我在使用免费套餐时遇到了同样的问题。我换成了 4GB 内存,现在一切都在运行。

【讨论】:

以上是关于Webpack 在本地工作,但不在 AWS 服务器上的主要内容,如果未能解决你的问题,请参考以下文章

validate_email python库在本地机器上工作,但不在aws弹性bean上

React 图像在本地加载,但不在 AWS Amplify 上

外部接口。 addcallback 在本地工作,但不在服务器上?

Pushsharp:IOS 通知在本地工作,但不在实时服务器上

API调用代码在本地主机上工作但不在服务器上

Laravel 视图在生产中工作但不在本地