node.js - 我可以用作 webpack 配置的 es-modules 吗?
问题描述
我正在使用节点 13.4.0。使用 es 模块(通过 .mjs 扩展)。
使用 webpack 配置文件作为 es 模块崩溃:
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /path-to-config-dir/webpack.config.mjs
最简单的 es 模块webpack.config.mjs:
export default {};
webpack 是否支持配置文件的 es-modules?我找不到很多关于该主题的信息。我发现了这个(2019 年 6 月关闭的问题):
https://github.com/webpack/webpack/pull/9226
所以我想知道关于 mjs 的 webpack 配置文件的状态。任何人都可以指出我的一些文件吗?
解决方案
我通过迁移到typescript
文件类型和方法解决了这个问题:
package.json
{
...
"type": "module",
...
}
babel.config.ts
export default api => {
api.cache(true)
return {
presets: ['...'],
plugins: ['...'],
env: { '...': '...' },
}
}
webpack.common.ts
import { common } from './webpack.common'
import webpack from 'webpack'
...
export default {
entry: {
'...': '...',
},
output: {
'...': '...',
},
resolve: {
extensions: ['.ts', '.tsx', '.js', '.jsx', '.json'],
},
module: {
rules: [
{
test: /\.(js|jsx|ts|tsx)$/i,
exclude: /node_modules/,
use: [
{
loader: 'babel-loader',
options: {
cacheDirectory: true,
presets: [
[
'@babel/preset-env',
{
'...': '...',
},
],
'@babel/preset-react',
'@babel/typescript',
],
plugins: [
['babel-plugin-transform-require-ignore', {}],
'@babel/plugin-proposal-class-properties',
'@babel/plugin-proposal-object-rest-spread',
],
},
},
],
},
'...'
],
},
}
tsconfig.json
{
"compilerOptions": {
"...": "..."
},
"include": ["..."],
"exclude": ["..."],
"linterOptions": {
"exclude": ["..."]
},
"defaultSeverity": "..."
}
推荐阅读
- arduino-uno - 想通过 MAX485 使用 Arduino Uno 读取 VFD 的输出频率
- python - 用 Python 构建图
- ios - 在没有动画的情况下执行 UICollectionView reloadData
- sql-server - 在 SSIS 项目中进行 ETL 过程时,如何在 SCD 转换中映射 varchar(max) 列?
- javascript - 组件在反应钩子中多次重新渲染
- mqtt - 在两个 MQTT 代理之间路由发布消息
- c# - 我的方法中的空引用异常。如何解决?
- authentication - symony 3.3 保护多个提供商的身份验证
- c++ - 拷贝初始化和拷贝构造函数的关系
- java - 在java中使用嵌套数组反序列化YAML文件