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 在本地工作,但不在服务器上?