Babel子模块出现意外的import标记。

3
我找不到解决我的问题的方法,以下是问题描述:
我在API上使用babel将我的代码从es6转换为es5。这个过程一直很顺利,直到我添加了一个子模块,其中包含API和我的移动应用程序(React Native)之间共享的函数。
现在,当我从这个常见的子模块导入东西时,我会收到一个错误“Unexpected token 'import'”,因此我的子模块没有被转换。
请注意,在移动应用中,我对这个子模块没有问题。
下面是我的结构:
| src
| -- common/ (子模块)
| -- -- graphql/
| -- -- -- user.js (必需,采用es6编写)
| -- -- package.json
| -- data/
| -- helper/
| -- index.js
我的babelrc文件如下:
{
  "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文件。
这里是Babel错误
有人遇到过这个问题吗?谢谢 :)
编辑:如果我删除子模块的package.json文件,则可以正常工作。
编辑2:将我的.babelrc重命名为babel.config.js就解决了✅。
节点v8.10.0 babel 7.0.0

你看过 https://babeljs.io/docs/en/config-files 吗? - loganfsmyth
是的,在我的 package.json 中没有任何 babel 键,所以我尝试在我的子模块中创建一个 .babelrc 来扩展根配置,但什么也没改变。但是如果我删除 package.json,它就可以工作了。 这很奇怪... - Guillaume Lamanda
1个回答

2
这是预期行为。如果您查看https://babeljs.io/docs/en/config-files,关键部分是:
“被编译的“文件名”必须在“babelrcRoots”包内,否则将完全跳过搜索。” src/common/graphql/user.jssrc/common包内,但您的根包是根,即不同的包。
如果要使用内部的.babelrc,需要通过在根目录中创建一个babel.config.js文件来选择加入。
module.exports = {
  babelrcRoots: [__dirname, __dirname + "/common"],
};

为了让 Babel 知道这两个包都应该被视为可用于 .babelrc 的包。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接