javascript - 为什么我无法通过大括号从 javascript 文件导入属性?

标签 javascript ecmascript-6 babeljs

我定义了一个 JavaScript 文件,如下所示:

export default {
  parseOptions: {
    tolerant: true,
    raw: true,
    tokens: true,
    range: true,
    comment: true,
  },
  syntaxType: {
    callback: 'callback',
    promise: 'promise',
    await: 'await',
  },
};

我使用下面的代码将其导入其他文件中:

import { syntaxType } from './options';
...
synaxType.callback

我收到错误 synaxType我使用的时候没有定义。但是,如果我更改为以下代码,它将正常工作:

import options from './options';
options.synaxType.callback

我想知道我之前的导入出了什么问题。我需要为此配置什么吗?以下是我的 babel 配置:

{
  "presets": [
    ["es2015"],
    "stage-0",
    "react",
    "react-boilerplate"
  ],

  "plugins": [
    "transform-decorators-legacy",
    "transform-class-properties",
    "transform-async-to-generator",
    "react-hot-loader/babel"
  ]
}

最佳答案

语法

import options from './options';

将假定options是默认导出的对象。这就是 options.synaxType.callback 起作用的原因。

语法

import { syntaxType } from './options';

需要 syntaxType 是导出成员,例如:

export const syntaxType = {
    callback: 'callback',
    promise: 'promise',
    await: 'await',
};

如果模块中存在上述构造,则该语法将起作用。

关于javascript - 为什么我无法通过大括号从 javascript 文件导入属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46086202/

相关文章:

javascript - array.find 不适用于 Babel

javascript - 如果处理程序在同级组件上调用 setState,则 react 表单 event.preventDefault() 不起作用

javascript - 如何将一组单选按钮居中对齐在测验标题的中心并保持响应?

reactjs - 使用 ES6 设置初始 React 状态时,WebStorm 检查器会抛出警告

javascript - Babel 7 没有正确转换内置子类

babeljs - Visual Studio 2015 JSX/ES2015 使用 babel 语法高亮显示

javascript - 如何知道我的文本在 DIV 中包裹了多少行

javascript - 根据语言更改 PHP/JS 中的 CSS 值/属性

javascript - 按值或值组比较数组

javascript - 如何将文件夹中的所有文件作为模块导入并将所有文件导出为对象?