Vue模块导入顺序错误

问题描述

也许这不是我遇到的特定于Vue的问题,但这是在我的VueJs项目中发生的。我试图简化问题,因此示例项目结构如下:

+-src/
  |
  +-config/
  | |
  | +-permissions.js
  |
  +-services/
  | |
  | +-auth.service.js
  |
  +-router.js
  +-main.js

我忽略了所有不重要的代码来保持简单,因此main.js是:

import router from "./router"
import authService from "./services/auth.service"

router.js

import * as Permissions from "./config/permissions"
export default new VueRouter({
  routes: [
    {
      Meta: { requiresPermissions: Permissions.ShowArticles,},// more unimportant lines here...
    },]
})
console.log('Loaded router.js')

permissions.js

export const ShowArticles = 'SHOW_ARTICLES'
console.log('Loaded permissions.js')

auth.service.js

import router from "./router"
console.log('Loaded auth.service.js')
console.log(router.currentRoute.Meta.requiresPermissions)

好,就这些。现在是我的问题。有4个console.log()输出如下:

Expected output:
Loaded permission.js
Loaded router.js
Loaded auth.service.js
SHOW_ARTICLES

Actual output:
Loaded router.js
Loaded auth.service.js
undefined
Loaded permission.js

我从Vue组件加载了auth.service模块,但是在 router.js ShowArticles之后又加载了 permissions.js 变量具有 undefined 值。我不知道为什么会这样,将权限导入到路由器模块的顶部,那么为什么以后再调用呢?

希望很清楚。还有另一点:当我从auth.service中删除路由器时,输出变为:

Loaded auth.service.js
Loaded permission.js
Loaded router.js

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)