Ubuntu 22.04服务器上Deno应用无法下载依赖的问题求助
解决Deno部署Ubuntu 22.04时无法加载远程模块的问题
问题说明
部署Deno+Fresh应用到Ubuntu 22.04服务器时,出现以下错误:
error: Import 'https://deno.land/std@0.193.0/dotenv/load.ts' failed: error sending request for url (https://deno.land/std@0.193.0/dotenv/load.ts): error trying to connect: Connection reset by peer (os error 104)
at file:///home/hyse.ch/main.ts:7:8
环境配置:
- Ubuntu 22.04
- Deno 1.37.2 (release, x86_64-unknown-linux-gnu)
- v8 11.8.172.13
- TypeScript 5.2.2
解决方案
1. 排查服务器网络限制
Connection reset by peer大多是网络层面的问题,先确认服务器能否正常访问deno.land:
- 用curl测试连通性:
如果curl也报错,检查防火墙和DNS:curl -v https://deno.land/std@0.193.0/dotenv/load.ts- 开放HTTPS出站端口:
sudo ufw allow out 443/tcp sudo ufw reload - 更换DNS为公共DNS(比如Google的8.8.8.8):
修改内容为:sudo nano /etc/resolv.conf
保存后重新测试curl。nameserver 8.8.8.8 nameserver 8.8.4.4
- 开放HTTPS出站端口:
2. 修复Deno SSL证书问题
即使更新了系统证书,Deno可能没正确读取,试试以下操作:
- 强制Deno使用系统证书启动:
如果是Fresh应用,启动命令改为:deno run --cert /etc/ssl/certs/ca-certificates.crt main.tsdeno task start --cert /etc/ssl/certs/ca-certificates.crt - 重新更新系统证书:
完成后重启应用。sudo update-ca-certificates -f
3. 升级Deno版本
你的Deno版本1.37.2对应std@0.193.0可能存在兼容问题,升级到最新稳定版试试:
deno upgrade
升级后重新运行应用。
4. 本地预下载依赖再部署
如果网络问题无法解决,先在本地把所有依赖下载好,再传到服务器:
- 本地执行命令缓存依赖到
deps目录:deno cache --output ./deps main.ts - 将
deps目录和应用代码一起上传到服务器。 - 修改
main.ts中的导入路径,把远程URL换成本地路径,比如:import "./deps/std@0.193.0/dotenv/load.ts"; - 最后在服务器运行应用。
内容的提问来源于stack exchange,提问作者Nougator
相关产品推荐
相关产品推荐

