将数组导出为es6模块

11

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

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

那么:

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

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


那段代码很好(除了依赖于ASI :-)),并且在我使用Chrome时可以正常工作(如果我将“.js”添加到导入中)。你在什么环境下进行这个操作?你使用某种打包工具吗? - T.J. Crowder
你的问题发生在Jest上吗? - jstuartmilne
你说得对 - 添加.js可以解决这个问题。我正在使用 Facebook 的 create-react-app,通过它我可以导入组件、类、函数和对象,无需指定文件扩展名。 - Toby
奇怪的是,如果我将文件名从constants更改为helpers,它就可以工作了。 constants是JavaScript或ES6中的受保护单词吗?我知道const是,也许有关.. - Toby
@Toby - 不,JavaScript本身并没有保护constants。也许是你的加载器配置有问题,或者你有其他的constants.x文件在你的Web服务器配置中具有优先级。在这种情况下,我期望在Web控制台中看到错误消息而不是记录undefined - T.J. Crowder
可以的 - 哦,我明白了。@T.J.Crowder 如果你想把你的评论作为答案提供,我会将其选为答案,谢谢! - Toby
1个回答

8

浏览器环境中的模块使用相对URL,包括扩展名。因此,导入应该是from './constants.js'而不仅仅是from './constants'。(后者在Node.js上是可以的,但它当前处于实验性模块支持状态。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接