我找不到我的问题的解决方案,这里是:
我使用 babel 在我的 API 上将我的代码从 es6 转译到 es5。
这一直很好,直到我添加一个子模块,其中包含 API 和我的移动应用程序(React Native(之间的共享功能。
现在,当我从这个公共子模块导入某些内容时,我有一个错误"意外的令牌'导入'",所以我的子模块没有转译。
请注意,在移动应用程序上,我对这个子模块没有问题。
这是我的结构:
| src
| -- 通用/(子模块(| -- -- graphql/| -- -- --用户.js (必需,写入 ES6(
| -- --包.json
| -- 数据/| -- 助手/
| -- 索引.js
我的巴贝尔克看起来像:
{
"plugins": [
"@babel/plugin-proposal-object-rest-spread",
"@babel/plugin-transform-arrow-functions",
"@babel/plugin-transform-regenerator",
"@babel/plugin-transform-runtime",
"@babel/plugin-syntax-dynamic-import",
"@babel/plugin-proposal-class-properties"
],
"presets": ["@babel/preset-env"]
}
注意 我的子模块没有任何.babelrc
这是巴别塔错误
有人已经遇到这个问题了吗? 谢谢:)
编辑:如果我删除子模块包.json,它可以工作
编辑2:将我的.babelrc
重命名为babel.config.js
成功✅
了节点 v8.10.0 通天塔 7.0.0
这是预期行为。如果你看 https://babeljs.io/docs/en/config-files,关键部分是
正在编译的"文件名"必须在"babelrcRoots"包中,否则搜索将被完全跳过。
src/common/graphql/user.js
位于src/common
包内,但根包是根包,根包是不同的包。
如果您想使用内部.babelrc
则需要通过在根目录中创建一个babel.config.js
文件来选择使用它
module.exports = {
babelrcRoots: [__dirname, __dirname + "/common"],
};
这样 Babel 就知道这两个包都应该被认为是.babelrc
包。