【问题标题】:Cannot export default with Webpack 4 and Babel 7无法使用 Webpack 4 和 Babel 7 导出默认值
【发布时间】:2018-10-04 12:23:21
【问题描述】:

这里有一些曾经对我使用 Babel 6 的功能,但我在使用 Babel 7 时遇到了问题。我正在尝试将(默认)类导出为库。目前我在尝试导入时收到以下错误。

未捕获的 SyntaxError:请求的模块 './dist/datastore.js' 没有 提供一个名为“default”的导出

我的配置与我以前的配置几乎相同,只是使用 Babel 7 进行了更新。

来自 Webpack 的位:

output: {
  path: `${__dirname}/dist`,
  filename: `${moduleName}.js`,
  library: 'datastore',
  libraryExport: 'default',
  libraryTarget: 'umd',
  umdNamedDefine: true
},

来自我的入口点的位:

import DataStore from './datastore';

export default DataStore;

来自 .babelrc 的位:

{
  "presets": [
    ["@babel/preset-env", {
      "targets": {
        "node": "current"
      },
      "modules": false
    }]
  ],
  "plugins": [
    "@babel/plugin-transform-async-to-generator",
    "@babel/plugin-transform-destructuring",
    "@babel/plugin-proposal-class-properties",
    "@babel/plugin-proposal-object-rest-spread"
  ]
}

有人有什么想法吗?

【问题讨论】:

    标签: webpack ecmascript-6 babeljs webpack-4 babel-loader


    【解决方案1】:

    如果你使用的是 babel 7,你需要加载这个包:

    npm i --save-dev babel-plugin-add-module-exports
    

    然后在你的 babel 配置中添加这个插件'add-module-exports':

    module.exports = {
      presets: [
        [
          '@babel/preset-env',
          {
            modules: false,
            targets: {
              browsers: ['last 2 versions', 'safari >= 7']
            }
          }
        ]
      ],
      plugins: ['add-module-exports']
    };
    

    【讨论】:

    • 真的吗?根据该插件的文档,它只影响 commonjs 模块,而我正在尝试导出纯 es 组件。
    • 但是 Babel 7 升级文档明确指出他们已经 Dropped use of add-module-exports plugin...我错过了什么吗?
    • 指的是 babel 库本身,例如,如果你从 babel 导出一些东西来构建你自己的 babel 插件。
    • 这解决了我的问题
    猜你喜欢
    • 2019-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 2016-06-15
    • 2017-06-09
    相关资源
    最近更新 更多