javascript - 如何在javascript中配置babel7以支持 `import {}`从 `export default`

标签 javascript webpack babeljs webpack-4 babel-loader

我正在将 webpack 4babel 7 用于 JavaScript 项目。当我使用 import { ... } 语法时,我不起作用。下面是源代码:

./test.js

const a = 1;

export default { a };

./index.js

import { a } from './test';

console.log(a);

输出是未定义。如果我按如下方式更改 index.js ,它就可以正常工作:

import a from './test';

console.log(a.a);

我想知道应该如何配置 babel7 以支持 import {}。下面是我的 .babelrc:

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

我也尝试了一些插件,但没有一个有效:

{
  "presets": [
    "@babel/preset-env"
  ],
  "plugins": [
    ["@babel/plugin-proposal-decorators", { "legacy": true }],
    "@babel/plugin-proposal-class-properties",
    "@babel/plugin-transform-async-to-generator",
    "@babel/plugin-proposal-object-rest-spread",
    "@babel/plugin-proposal-export-default-from",
    "@babel/plugin-syntax-export-default-from",
    "@babel/plugin-proposal-export-namespace-from"
  ]
}

下面是依赖项:

devDependencies": {
    "@babel/cli": "^7.2.3",
    "@babel/core": "^7.2.2",
    "@babel/plugin-proposal-class-properties": "^7.2.3",
    "@babel/plugin-proposal-decorators": "^7.2.3",
    "@babel/plugin-proposal-export-default-from": "^7.2.0",
    "@babel/plugin-proposal-export-namespace-from": "^7.2.0",
    "@babel/plugin-proposal-object-rest-spread": "^7.2.0",
    "@babel/plugin-syntax-export-default-from": "^7.2.0",
    "@babel/plugin-transform-arrow-functions": "^7.2.0",
    "@babel/plugin-transform-async-to-generator": "^7.2.0",
    "@babel/preset-env": "^7.2.3",
    "@babel/preset-es2015": "^7.0.0-beta.53",
    "babel-loader": "^8.0.4",
    "jest": "^23.6.0",
    "webpack": "^4.28.2",
    "webpack-cli": "^3.1.2",
    "webpack-dev-server": "^3.1.14"
  },

下面是我的 babel-loader 的 webpack 配置:

module: {
      rules: [
        {
          test: /\.js?$/,
          exclude: /(node_modules)/,
          loader: 'babel-loader'
        }
      ]
    },

最佳答案

这与 Babel 无关。问题是您需要阅读命名导出的工作原理。

import { a } from './test';

正在尝试从 test.js 导入 named 导出 a。括号 {} 语法用于导入 named 导出。

相反,请选择

import a from './test';

这是导入默认导出的语法,

或更改 test.js 以执行名为 a 的导出:

const a = 1;

export { a };

您的 test.js 仅具有 default 导出,并且没有名为 a 的导出。

关于javascript - 如何在javascript中配置babel7以支持 `import {}`从 `export default`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53985395/

相关文章:

javascript - Webpack Angular 2 应用类型错误 : Cannot read property 'getOptional' of undefined

javascript - "react doesn' t 存在”在 Node.js 命令提示符中

javascript - 为什么 'this' 无法在 AngularJS 的服务中解析?

javascript - AngularJS 处理多次调用 Promise,但有一些异常(exception)

javascript - 表格排序,分页脚本问题

angular - woff2、woff 和 ttf 文件未加载并给出 400 错误

javascript - 脚本5022 : Exception thrown and not caught

javascript - 通过使用 php/html 中的 java 脚本将天数与另一个输入日期字段相加来填充日期

javascript - Highcharts 缩放 2 个图表 - 重置缩放问题

javascript - 与 Web 小部件通信 - Meteor、React、Node