webpack - Webpack 和 babel:导入问题
问题描述
问题:
SyntaxError: Unexpected token {
import { merge } from 'webpack-merge';
我使用下面的命令并收到此错误消息。我已经在 github 上阅读了多个关于此的问题并按照他们的建议进行操作,但我仍然收到此错误消息。所以, .babelrc 和 command 是:
命令:
cross-env NODE_ENV=production webpack -p --config webpack/client.prod.config.js
.babelrc:
{
"presets": [
["@babel/preset-env", {
"targets": {
"node": "current",
"browsers": ["last 2 versions"]
}
}],
"@babel/preset-react"],
"plugins": [
"react-loadable/babel",
"@babel/plugin-syntax-dynamic-import",
["import-inspector", {
"serverSideRequirePath": true
}]
]
}
建议的解决方案:我在 .babelrc 文件中插入了“@babel/plugin-syntax-dynamic-import”,但没有帮助。
Webpack 配置:我的 webpack 由两个文件组成:通用文件和特定文件(客户端或服务器,开发或生产)。在这种情况下,我将只显示 common.js 和 client.prod.config.js:
可以看出,问题出在 client.prod.config.js 文件中,因为我使用 import { merge } from '...'
解决方案
好的,所以您的主要问题是您正在创建一个webpack
配置,但您正在混合ES modules
语法。由于 webpack 是从 Node 运行的,无论是什么版本,ES 模块都将无法工作,除非它们被转译(使用 babel)到 CommonJS(同样,你不能与 混合module.exports
,import
它要么是所有的 ES5 要么是所有的 ES 模块)。
对您来说最简单的解决方案是将您的import
语句转换为require
,一切都会像那样工作:) 您.babelrc
在这里没有用,因为它只会在webpack
启动并babel-loader
在您的源代码上运行时加载。
const { merge } = require("webpack-merge");
const { join } = require("path");
// And so on...
可以这样想:每当你配置 webpack 时——在 ES5 中编写所有内容。
推荐阅读
- javascript - Javascript pushState,onpopstate - 在〜10个状态之后 - 单击第5步(在后退按钮上)并输出第4步
- javascript - 通过 jQuery 以编程方式设置滚动时不要阻止滚动动画
- django - 在 datefiled 中覆盖 Django auto_now
- sql-server - 派生表性能
- auth0-lock - auth0lock:无法读取未定义的属性“createElement”
- python - Pandas 根据其他 df 中的值在一个数据框中选择值
- opencv - 如何从二进制掩码生成 trimap?
- c# - 如果碰撞对象具有标签“玩家”,则触发事件
- php - Laravel 迁移 Postgres 错误 SQLSTATE[08006]
- scala - Scala 隐式构造函数