【问题标题】:Export array as an es6 module将数组导出为 es6 模块
【发布时间】:2018-12-07 12:43:36
【问题描述】:

由于某种原因,我无法使用导出为 es6 模块的数组:

export const choices = [
  ['first', 'First'],
  ['second', 'Second'],
  ['third', 'Third'],
]

然后:

import { choices } from './constants'
console.log(choices) // undefined

如果我只是在我尝试使用它的同一文件中声明const,它会按预期工作。

【问题讨论】:

  • 该代码很好(除了依赖 ASI :-)),并且在 Chrome 中为我工作(如果我将 .js 添加到导入中)。你在什么环境下做这个?你在使用某种捆绑器吗?
  • 您的问题发生在 Jest 上吗?
  • 你是对的 - 添加 .js 可以解决这个问题。我通过 Facebook 的 create-react-app 使用 React。我的组件、类、函数和对象都可以在不指定文件扩展名的情况下导入。
  • 奇怪的是,如果我将文件名从 constants 更改为 helpers,它可以工作。 constants 是 javascript 或 es6 中的受保护词吗?我知道const 可能是相关的..
  • @Toby - 不,constants 在 JavaScript 本身中不受保护。也许你的加载器配置中有一些东西,或者你有一些其他constants.x 文件在你的网络服务器配置中具有优先级。在这种情况下,我希望 Web 控制台中出现错误消息,而不是记录 undefined

标签: javascript ecmascript-6 es6-modules


【解决方案1】:

浏览器上下文中的模块使用相对 URL,包括扩展名。所以导入应该是from './constants.js' 而不仅仅是from './constants'。 (不过,后者在 Node.js 上会很好,因为它支持当前的实验模块。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2017-06-29
    • 1970-01-01
    相关资源
    最近更新 更多