Node.js 巴别塔7中的外部进口不会被运输
我目前正在将一个代码库从Babel6迁移到7。代码由多个单独的项目组成,这些项目有自己的配置Node.js 巴别塔7中的外部进口不会被运输,node.js,babeljs,Node.js,Babeljs,我目前正在将一个代码库从Babel6迁移到7。代码由多个单独的项目组成,这些项目有自己的配置 main项目从external导入文件,但是由main从external导入的脚本没有被传输,并且在“意外令牌导入”时失败。直接位于main中的脚本可以正确传输 我在main项目中使用以下命令来传输脚本: babel-node ./index.js 另一个项目使用Webpack做同样的事情,并正确处理所有事情 这种设置也适用于巴别塔6 .babelrc用于main { "ignore": [
main
项目从external
导入文件,但是由main
从external
导入的脚本没有被传输,并且在“意外令牌导入”时失败。直接位于main
中的脚本可以正确传输
我在main
项目中使用以下命令来传输脚本:
babel-node ./index.js
另一个项目使用Webpack做同样的事情,并正确处理所有事情
这种设置也适用于巴别塔6
.babelrc
用于main
{
"ignore": [
"node_modules"
],
"presets": [
["@babel/preset-env", {
"targets": {
"node": "current"
},
"useBuiltIns": "entry"
}]
],
"plugins": [
[
"module-resolver", {
"alias": {
"External": "../external"
}
}
],
"@babel/plugin-proposal-decorators",
"@babel/plugin-proposal-object-rest-spread",
"@babel/plugin-proposal-export-default-from",
"@babel/plugin-proposal-export-namespace-from",
"@babel/plugin-proposal-class-properties"
]}
.babelrc
用于外部
{
"presets": [
"@babel/preset-react"
],
"plugins": [
"@babel/plugin-proposal-class-properties",
"@babel/plugin-proposal-object-rest-spread",
"@babel/plugin-transform-runtime"
]}
我在以下位置创建了一个示例来详细说明我的问题:
TL;DR我正试图从项目根目录外部导入脚本,但它们不会被Babel传输,项目内部的脚本会进行传输。当前目录的
。在外部目录中导入文件时,不会加载babelrc
,您可以在该目录中放置.babelrc
,并通过相对路径(而不是短名称)设置其预设值
:
{“预设”:[“.\pad\node\u modules\babel preset env”],
“保留行”:true}
我已经通过以下评论解决了这个问题 解决办法是:
.babelrc
移动到babel.config.js
并使其成为CommonJS模块babel节点时添加--ignore=node\u模块
Babel.config.js
it中的ignore
属性必须指定为标志
Babel 7似乎只允许在Babel配置所在的目录中进行导入,但是显式设置--ignore
标志会覆盖此选项
您可以查看我的以及为使其正常工作而更改的内容
GitHub上的仍然是开放的,因此将来可能会有更好的解决方案。您的
babel loader
的网页配置是什么?@loganfsmyth感谢您的回复。这不是用于Webpack的,它只是使用了babel node./index.js
,正如在《Oh gotcha》中看到的,我读得太快了:P@nerdyman你解决了这个问题吗?我也有同样的问题。@TonyT不幸的是没有——尽管我已经一个月左右没有看了。我在巴别塔松懈报上发了帖子,但他们被难住了。我现在坚持使用巴别塔6。你能详细说明一下它是如何工作的吗?我不确定这是否解决了我的问题,目标是使每个项目自治,仅使用别名导入。@nerdyman如果外部目录中的文件包含es6代码,则在导入时应进行翻译,但如果该目录中没有.babelrc,则翻译将失败。由于该目录只是一个普通的代码持有者,而不是一个项目
(没有package.json,没有node_模块),即使我们将相同的.babelrc(在根目录中使用)放在那里,也不会加载babel插件。因此,放一个特殊的.babelrc和路径引用的插件,babel加载程序将在根目录中找到它们并正确地进行翻译。我不认为这是这里的问题,external是它自己的项目,有自己的package.json和.babelrc,如图所示。是的,我可以在babel6中运行您的示例,但在babel7中不起作用。对于NextJS,除了“next/babel”之外,不需要任何其他预设。我缺少的神奇来源是--ignore=node_模块-谢谢。