问答

异步import时好时坏怎么办?

作者:admin 2021-04-19 我要评论

console.log(0, import('../Pages/IndexPage'))const withLoadable = (path) = { console.log(1, import(path)) return Loadable({ loader: () = { return impor...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
console.log(0, import('../Pages/IndexPage'))


const withLoadable = (path) => {
    console.log(1, import(path))
    return Loadable({
        loader: () => {
            return import(path)
        },
        loading: Loading
    })
}
withLoadable('../Pages/IndexPage')

第一种方法可以拿到组件 第二种则不行
image

是为什么?

###

你是用webpack或其他打包工具开发的吧,如果纯粹使用es6进行开发应该是没有问题的。

webpack在开发阶段也会进行打包,而他内部自己实现了一套import。webpack在打包的时候会找到import进行依赖收集,你的代码中import(path)path是一个变量,并不指向具体的哪个路径,所以打包的时候找不到你下面传入的路径,你看给出的错误提示也应该能看出来:cannot find module xxx at xxx,这个main.chunk.js就是打包后的主文件。

详细的可以网上查下资料,webpack import() 动态加载模块踩坑在vue中import()语法为什么不能传入变量?

###

错误信息已经提示你了,找不到 ../Pages/IndexPage 这个模块。

其实主要就是webpack打包原理,你可以这样理解:
在遇到import的时候,会直接引入把这个模块打包进chunk,所以你第一个可以找到文件,
但是第二个你是一个函数,接受一个path去引入,webpack在打包的时候是不知道的,最后在你执行的时候去找你传入的路径上的模块,打包完了你执行的时候是在 /static/js 下的所以是找不到这个 ../Pages/IndexPage 这个模块的。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • nginx响应速度很慢

    nginx响应速度很慢

  • 点击选中的多选框,会在已选那一栏显示

    点击选中的多选框,会在已选那一栏显示

  • PHP 多态的理解

    PHP 多态的理解

  • 关于C语言中static的问题

    关于C语言中static的问题

腾讯云代理商
海外云服务器