我试图建立我的项目与巴别塔和目标节点14.15.4
我的.babelrc是这样的
{
"presets": [
[
"@babel/preset-env",
{
"targets": {
"node": true
}
}
]
]
}
字符串
所以我希望babel输出能与当前节点兼容。不幸的是babel输出一直使用require
语法而不是import
,所以不能与节点14一起运行,这会抛出错误
require("./server.js");
^
ReferenceError: require is not defined
at file:///Users/grzegorz/Projects/charts/server/dist/index.js:3:1
at ModuleJob.run (internal/modules/esm/module_job.js:152:23)
at async Loader.import (internal/modules/esm/loader.js:166:24)
at async Object.loadESM (internal/process/esm_loader.js:68:5)
知道我做错了什么吗?
2条答案
按热度按时间t9eec4r01#
节点
类型:字符串|“当前”|没错。
如果要针对当前节点版本进行编译,可以指定“node”:真或“节点”:“当前”,与“节点”相同:进程.版本.节点.
或者,您可以在browserslist查询中指定节点版本:
因为Node.js在次要版本中可能支持新的语言功能,所以为Node.js 12.22生成的程序可能会在Node.js 12.0上引发语法错误。我们建议您始终指定次要版本。
信息来自这里!
niwlg2el2#
下面的代码将告诉babel不要转换模块:
在这种情况下生成的模块代码将不包含操作间粘合。
"modules": false
是关键。没有它,babel非常坚持将堆栈转换为CommonJS兼容语法。此选项禁用所有模块语法转换。此选项删除兼容性粘合,并要求使用。