javascript - 强制 Babel 将 import 转换为 require?
问题描述
在我从节点 12 升级到节点 14 后,Babel 停止转换import
为require
. 这是我的 Babel 配置:
export default {
presets: [
['@babel/preset-env', {
useBuiltIns: 'usage',
corejs: '3',
modules: false,
targets: {
node: 12,
},
}],
'@babel/preset-typescript',
],
plugins: [
'@babel/plugin-syntax-dynamic-import',
'@babel/plugin-proposal-class-properties',
'@babel/plugin-proposal-optional-chaining',
],
sourceType: 'unambiguous',
overrides: [
{
test: ['./web'],
presets: [
['@babel/preset-env', {
useBuiltIns: 'usage',
corejs: '3',
}],
],
plugins: [
'@babel/plugin-transform-react-jsx',
['module-resolver', {
root: ['./shared', './web'],
extensions: ['.js', '.jsx', '.ts', '.tsx'],
}],
],
env: {
production: {
plugins: ['transform-react-remove-prop-types'],
},
},
},
{
test: ['./server'],
plugins: [
['module-resolver', {
root: ['./shared', './server'],
extensions: ['.js', '.jsx', '.ts', '.tsx'],
}],
],
},
{
test: ['./shared'],
plugins: [
['module-resolver', {
root: ['./shared'],
extensions: ['.js', '.jsx', '.ts', '.tsx'],
}],
],
},
],
};
我怎样才能让 Babel 变形import
?
解决方案
您应该将@babel/preset-env
'modules
选项设置为,'cjs'
以便它将您的模块转换为 CommonJS(它使用require
)。值false
告诉 Babel 不要执行模块转换。
“AMD” | “嗯” | “系统” | “普通” | "cjs" | “汽车” | 假,默认为“自动”。
启用将 ES 模块语法转换为另一种模块类型。请注意,cjs 只是 commonjs 的别名。
将此设置为 false 将保留 ES 模块。仅当您打算将本机 ES 模块发送到浏览器时才使用此选项。如果你使用 Babel 打包器,默认模块:“auto”总是首选。
推荐阅读
- sas - proc sql 在 SAS 中执行的调用中执行插入
- winapi - 如何使 SetCursorPos 和/或 SendInput 在 VM 中工作?
- c - 为什么我的 *exe 文件是一个二进制文件,导致我无法在浏览器上运行
- windows-installer - 在 Windows 2016 Server / Windows 10 上的 MSI CustomAction 中使用 VersionHelper API
- react-native - 我在反应导航中得到了意想不到的顶部标题
- c - 递归和的 Big Oh 运行时
- php - 如何获得foreach循环的总和?
- sql - 如何对列排序规则进行永久更改?
- ios - 应用内购买显示名称和描述未正确加载 - Swift 4
- sql - 输出“无” - psycopg2 数据库查询