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

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

时间2025-05-25 10:11:33分类IT科技浏览4270
导读:碰到一个贼无语的问题,有一个项目,需要使用虚拟键盘,找到了一个自称能在 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
linux中gun命令的含义(在Linux上使用GNU sed的方法) css倒计时代码(使用css3实现一个超浪漫的新年倒计时)