当前位置: 首页 > 知识库问答 >
问题:

如何将babel loader与本机es6模块一起使用?

呼延河
2023-03-14

我正在静态站点上使用本机es6模块。

<script type="module" src="./main.js"></script>

部署之前,我通过Babel传递js文件

//网页包。配置。js

rules: [
  {
    test: /\.js$/i,
    exclude: /node_modules/,
    use: ['babel-loader'],
  }
]

//. babelrc

  {
      "presets": [
        [
          "@babel/preset-env",
          {
            "modules": false,
          }
        ]
      ]
    }

默认情况下,babel会将模块转换为公共js,尽管我的代码中有一个标志“modules”:false。巴别塔

我不想让babel把模块变成通用的,我只想把除了导入和导出之外的所有东西都变成es2015,这样我就可以在浏览器中使用原生模块了

像这样://main.js之前

export default () => {
  return 'Hello world!'
}

Babelmain.js

export default function () {
  return 'Hello world!'
}

根据文档,巴贝尔提供了一个模块:false选项,但它不适合我

此外,无法与supportsStaticESM合作

  {
    test: /\.js$/i,
    exclude: /node_modules/,
    use: {
      loader: 'babel-loader',
      options: {
        presets: ['@babel/preset-env'],
        caller: {
          supportsStaticESM: true
        }
      }
    }
  }

然而,当我使用babel cli时,我得到了我所需要的!

在这种情况下,我认为webpack对babel不友好

谢谢。

"babel-loader": "8.0.5"
"webpack": "^5.40.0"

共有2个答案

师向文
2023-03-14

如果它适用于Babel,但不适用于Webpack,那么Webpack配置很可能会覆盖Babel的设置。

请尝试从网页配置(如果存在)中删除预设:['@babel/preset env'],

段干浩荡
2023-03-14

对我来说,仅仅指定target就成功了。

module.exports = {
    entry: './js/index.js',
    // ...
    target: ['web', 'es5']
}
 类似资料:
  • 使用React-Native并尝试学习ES6语法。我昨天也遇到了类似的问题,并得到了解决方案。我补充说 .绑定(这个) 到我的我的函数调用和问题解决。我在另一个函数调用中再次遇到了同样的问题,我无法跟踪到底发生了什么。错误消息是相同的。

  • 问题内容: 我试图将Python 3程序反向移植到2.7,但遇到了一个奇怪的问题: 根据文档,返回Unicode文本的内存流。当我尝试手动输入Unicode字符串时,它可以正常工作。为什么即使所有写入的字符串都是Unicode字符串,它也无法与模块结合使用?在什么地方来,它使得异常? (我知道我可以代替使用,但是我想知道在这种情况下怎么了) 问题答案: Python 2.7模块不支持Unicode

  • 我有一个明确的模块化项目,它依赖于一个自动模块;e、 g.关于java。激活。仍然可以使用jlink吗? 查看此模块信息。爪哇: 然后jlink不能添加模块: 根据我的理解,一个自动模块无论如何都会包含整个类路径。所以我想用jlink创建运行时映像没有任何好处? 另请参阅:什么是自动模块? 有没有可能绕过这个问题?也许为这些依赖生成module-info.java?

  • 在Martin Fowler的书中,我读到了和模式。 作者提到,将identityMap放在UnitOfWork内部是一个好主意。但怎么做呢? 据我所知,受会话限制,但作者没有提到 每个unitOfWork实例需要多少个IdentityMap实例? 如果我们有两个并发请求呢?

  • 问题内容: 我正在尝试在NodeJS中使用MySQL。我的整个应用程序都是基于Promise构建的,因此我也想推广该模块。 所以我有这个: 现在,根据他们的API,该方法接受一个参数,即在发生连接错误时调用的回调。我的问题是,这如何转化为承诺? 承诺会因错误而解决吗?会被拒绝吗?我可能需要吗?这是如何运作的? 问题答案: 如果某个方法是带有单个参数的节点“ errback”-它将在中没有任何参数地