无法从 vuejs 中的命名导入访问变量

Posted

技术标签:

【中文标题】无法从 vuejs 中的命名导入访问变量【英文标题】:Cannot access variable from named imports in vuejs 【发布时间】:2019-05-14 22:06:45 【问题描述】:

我有一个 vue 组件库。

组件/index.js

import Graphs from './graphs/index.js'
import Tabs from './Tab'
export default  Graphs, Tab 

然后在 index.js 上

import lib from 'components/index.js'
export default lib

然后我在我的 vue 应用上安装我的 lib

在我的 vue 应用中,我有以下内容:

import Graphs from lib
console.log(Graphs) >> undefined

但是,使用默认导入并访问它可以工作的变量:

import lib from lib
console.log(lib.Graphs) >> Object  props: …, computed: …, data: data(), methods: …, render: render(), staticRenderFns: [], _scopeId: "data-v-41c28542", beforeCreate: (1) […] 

我感觉这与 webpack 或 babel 模块有关,或者可能是我缺少但无法弄清楚它是什么。

【问题讨论】:

【参考方案1】:

在你的索引文件中你会得到结果

// import lib from "components/index.js";
//  given result lib.Graphs, lib.Tabs
//  then you exporting object like  lib:  Graphs: '....', Tabs: '...'  
export default  lib ; 

因为有这个结果。 在这种情况下 index.js 操作是不必要的

【讨论】:

这不是必需的,因为我以后会从更多文件中添加代码。当我重写 SO 问题的代码时,我犯了在导出默认值中添加额外大括号的错误。我已经编辑过了。谢谢。【参考方案2】:

似乎使用导入的对象不允许以后进行命名导入。

因此,即使 lib 是一个带有 Graphs 键的对象,它在像这样导入它之后也不起作用。

所以我要做的就是将它们再次导出为命名导出。

所以 index.js 变成了:

import lib from './components/index'
export let Graphs = lib.Graphs
export default lib

【讨论】:

以上是关于无法从 vuejs 中的命名导入访问变量的主要内容,如果未能解决你的问题,请参考以下文章

从导入模块中的函数访问全局变量

VueJS 和 SASS - 在脚本中导入和使用 SASS 变量

无法从Vuejs中的子组件向父组件发出事件

无法访问 vuejs 中的直接路由

Firestore 存储后无法分配给 VueJS 中的数据变量

./node_modules/ngx-window-token/fesm2015/ngx-window-token.mjs 中的错误。无法从非 EcmaScript 模块导入命名导出“Injectio