如何在Deno中导入带@的npm作用域包?解决依赖解析错误
解决Deno中导入@whiskeysockets/baileys的依赖解析错误
你的猜测不对,Deno并没有把whiskeysockets当成版本号,这个作用域的写法是正确的。真正的问题是:@whiskeysockets/baileys的依赖libsignal用了非标准的npm版本格式——直接指定GitHub仓库地址(github:adiwajshing/libsignal-node),而Deno默认的npm兼容层不支持这种格式,才会抛出版本解析错误。
下面是两种可行的解决办法:
方法一:使用--node-modules-dir参数让Deno用npm方式处理依赖
执行命令时加上该参数,Deno会生成标准的node_modules目录,用npm的逻辑处理所有依赖(包括这种GitHub源的依赖):
deno run --node-modules-dir main.ts
第一次运行会自动下载并安装所需依赖到node_modules,后续运行就可以正常执行了。
方法二:手动预安装依赖(需本地有npm环境)
如果不想每次都加参数,可以先通过npm手动安装所有依赖:
- 在项目根目录执行:
npm install @whiskeysockets/baileys
- 然后在Deno代码中修改导入路径为本地
node_modules中的包:
import * as a from "./node_modules/@whiskeysockets/baileys/lib/index.js"; console.log(a);
之后直接运行deno run main.ts即可。
内容的提问来源于stack exchange,提问作者Alex Advent
相关产品推荐
相关产品推荐

