×

javascript Vue

(已解决)Critical dependency: the request of a dependency is an expression

sexyspace sexyspace 发表于2020-12-21 16:28:52 浏览1156 评论0

在使用若依后台时,在部分情况下会出现以下错误:

aHR0cHM6Ly9vc2NpbWcub3NjaGluYS5uZXQvb3NjbmV0L3VwLWI4MjE2ODU3OTkwYjI1NzlkYWJmOTAxMmI1YWMzOWQ4NTE2LnBuZw.png

根据提示我们可以找到主要造成这个问题的代码是以下这段:

export const loadView = (view) => { // 路由懒加载
    return () => import(`@/views/${view}`)
}

全局搜索Node_modules我们可以看到这个问题是由webpack 的 lib/dependencies/ContextDependencyHelpers.js 第224行报出的警告;

然后在官方的issues中也能找到相关问题;

不过官方似乎并没有给出解决方案(也可能是我没有找到),也许是官方并不赞同import(`@/views/${view}`)这种引入方式;

我们也可以想办法换个方式引入,例如:

export const loadView = (view) => { // 路由懒加载
    return () => Promise.resolve(require(`@/views/${view}`).default)
}

这样既能保证组件的异步载入,也不会被webpack报异常,terminal看起来舒服多了;

webpack 版本问题,webpack4中动态import不支持变量方式,该修改对于生产环境无影响,只在开发环境有问题