首页IT科技关于加大城中村改造的建议(关于在 vite 中无法使用绝对地址动态导入的问题)

关于加大城中村改造的建议(关于在 vite 中无法使用绝对地址动态导入的问题)

时间2025-09-19 07:27:23分类IT科技浏览6278
导读:碰到一个贼无语的问题,有一个项目,需要使用虚拟键盘,找到了一个自称能在 vue 3 使用的,还能导入词库,看起来挺好,装完一用。好家伙,报错一环接一环,给我整无语了。但是市面上已经没有另外一款带中文的虚拟键盘了,只能捏鼻子下载下来自己改了。...

碰到一个贼无语的问题                  ,有一个项目                         ,需要使用虚拟键盘        ,找到了一个自称能在 vue 3 使用的             ,还能导入词库                          ,看起来挺好            ,装完一用                  。好家伙        ,报错一环接一环                          ,给我整无语了                         。但是市面上已经没有另外一款带中文的虚拟键盘了                ,只能捏鼻子下载下来自己改了        。

整了半天    ,终于让组件能在 vue 3 + TS 下跑了                          ,一看                    ,我的中文呢?看了看文档,只需要引用词库就行了                      ,我便将地址丢入组件中                        ,然后    ,程序就报错了:TypeError: Failed to resolve module specifier @/dict/baseDict.json             。

我直接一脸问号                  ,明明这路径存在资源啊                          。然后我就开始搜索                         ,一开始我直接搜了报错        ,发现和我的问题差之千里             ,就换成 TypeScript dynamic import 当关键词                          ,搜出来一些似是而非的答案            ,不过也给了我启发            。接下来我就使用 Vue 3 template string TypeScript dynamic import 当关键词        ,还是找不到答案        。

但是在找的过程中                          ,我发现使用一些规律                ,下面是代码:

import(@/dict.json) // 正常 import(../../dict.json) // 正常 var url = ../dict.json import(url) // 正常 import(`${@/dict.json}`) // 报错 var url = @/dict.json import(url) // 报错 var url = dict.json import(`@/${url}`) // 报错 import(@/ + url) // 报错 var url = dict.json import(../../ + url) // 报错    ,但不是无法引用                          ,而是 MIME 不正确 // 该案例使用了 js 而不是 json var url = dict.js import(../../ + url) // 正常 // dict.js import baseDict from "./baseDict.json"; export default baseDict

不过这已经不重要了                    ,因为我在这问题上花了很多时间,已经和这问题犟上了                          。虽然我可以直接写死路径                      ,但是废了大半天也找不到答案                        ,我这不得给这问题解决咯再写篇博客记录一下?

接下来我转换了思路    ,这个报错不止最开始的 TypeError                  ,后面还接了错误来源:runtime-core.esm-bundler.js                。我去搜了搜                         ,发现这是 vue 的 运行相关的东西        ,于是便搜索 runtime-core template string dynamic import    。终于在第一个链接中找到了答案                          。

简单点说就是 vite 不支持动态导入 @/ + 变量 这种模式             ,只支持相对路径                    。然后我去改了这个项目和另外一个 element plus 生成的路由引用组件的代码                          ,看看能否支持这个结论            ,结果是支持的        ,只要改成 import(`${@/dict.json}`) 就会报错                          ,这下思路就清晰了                ,只要改成相对地址就完事了。顺手给项目对应的 github 提了个 issus    ,希望可以给 vue 3 的中文开源环境提供一点点贡献吧(不过不知道变成包引用后                          ,这个相对路径该写成什么样)                      。

之后又在 vue 2 的项目中试了试                    ,发现在路由组件中使用 import(`${@/view/home.vue}`) 是可以正常运行的,和之前找到的答案有点出入                      ,不过                        ,以后再说8~

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
网站优化基本技巧(网站优化步骤)