【问题标题】:babel submodule unexpected token importbabel 子模块意外令牌导入
【发布时间】:2018-10-25 13:49:00
【问题描述】:

我找不到解决问题的方法,这里是:
我在我的 api 上使用 babel 将我的代码从 es6 转换为 es5。
在我添加了一个包含 API 和我的移动应用程序(React Native)之间共享功能的子模块之前,这一直很好用。
现在,当我从这个公共子模块导入某些内容时,我有一个错误“意外的令牌'导入'”,所以我的子模块没有被转译。
注意移动应用程序,我对这个子模块没有问题。

这是我的结构:
|来源
| -- common/ (子模块)
| -- -- graphql/
| -- -- -- user.js(必填,es6编写)
| -- -- 包.json
| -- 数据/
| -- 助手/
| -- 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 error

有人已经有这个问题了吗? 谢谢:)

编辑:如果我删除子模块 package.json,它可以工作

编辑 2:将我的 .babelrc 重命名为 babel.config.js 成功了 ✅

节点 v8.10.0
通天塔 7.0.0

【问题讨论】:

  • 是的,我的package.json 中有任何 babel 键,所以我尝试在我的子模块中创建一个.babelrc 来扩展根配置,没有任何变化。但是如果我删除package.json,它会起作用。这很奇怪......

标签: javascript node.js babeljs


【解决方案1】:

这是预期的行为。如果你看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-able 包。

【讨论】:

    猜你喜欢
    • 2017-05-08
    • 1970-01-01
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    • 2020-12-30
    相关资源
    最近更新 更多