Deno运行时出现std@v0.51.0/io/util.ts导入404错误如何解决
问题产生原因
- Deno官方标准库(std)早已废弃带
v前缀的版本号导入规则,形如https://deno.land/std@v<版本号>/xxx的路径现在会直接返回404,正确的导入格式为https://deno.land/std@<版本号>/xxx。 - 你自己的业务代码里没有直接导入相关路径,是因为问题出在项目依赖的第三方库上:从报错栈可以直接看到,是
dejs@0.7.0这个第三方库的内置vendor文件里,写死了带v前缀的std库导入路径,因此触发了错误。
定位方法
- 这类间接依赖导致的导入错误,可以优先看报错末尾的调用栈信息,本次报错已经直接标注了出错路径来自
https://deno.land/x/dejs@0.7.0/vendor/https/deno.land/std/io/util.ts,直接定位到问题依赖为0.7.0版本的dejs。 - 如果遇到栈信息不明确的情况,可以执行
deno info server.ts命令打印完整依赖树,排查所有依赖的导入路径,找到使用了带v前缀std版本的依赖即可。
解决方案
- 方案一(推荐):升级dejs到最新稳定版,新版本已经修复了std库导入路径的格式问题,将你项目中导入dejs语句的版本号从
0.7.0替换为最新版本号即可。 - 方案二:如果受业务限制暂时不能升级dejs版本,可以使用Deno的导入映射(import map)功能重写导入路径:创建一个导入映射文件,将所有
https://deno.land/std@v0.51.0/开头的路径映射到不带v前缀的对应路径,运行项目时加上--import-map <映射文件路径>参数即可。 - 方案三(临时验证用,不推荐长期使用):手动修改本地Deno缓存中
dejs@0.7.0对应的vendor文件,把导入路径里的v前缀删除,即可临时解决404问题。
内容的提问来源于stack exchange,提问作者user11874694
相关产品推荐
相关产品推荐

