You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker运行Deno时出现'$fresh/dev.ts'相对导入路径未前缀错误

解决Deno Fresh项目Docker运行时imports映射不生效的问题

问题详情

搭建了新的Deno Fresh项目,通过Docker运行(基于官方部署流程,使用项目默认配置而非仅运行main.ts),启动时出现相对导入错误:

error: Relative import path "$fresh/dev.ts" not prefixed with / or ./ or ../ from "file:///app/dev.ts"

相关配置文件如下:

Dockerfile

FROM denoland/deno:alpine-1.28.3
EXPOSE 3000
WORKDIR /app
ADD . /app
CMD ["deno", "task", "start"]

docker-compose.yaml

services:
  frontend:
    build:
      context: ./frontend
      dockerfile: Dockerfile.fresh
    ports:
      - "3000:3000"

deno.json imports配置

"imports": {
    "$fresh/": "https://deno.land/x/fresh@1.6.8/",
}

手动将dev.ts中的路径替换为完整URL后,构建能推进,但后续preact依赖也会出现相同错误。deno.json中的start任务可以正常执行,但imports映射未生效。

解决方案

  • 显式指定deno.json路径
    Deno默认读取当前工作目录的配置文件,但容器环境中可能存在上下文问题。修改Dockerfile的CMD命令,显式指定配置文件:

    CMD ["deno", "task", "--config", "/app/deno.json", "start"]
    
  • 升级Deno镜像版本
    当前使用的Deno 1.28.3版本较旧,可能与Fresh 1.6.8存在兼容性问题。替换为最新稳定版镜像:

    FROM denoland/deno:alpine-latest
    

    也可以查看Fresh 1.6.8的官方文档,确认最低要求的Deno版本,匹配对应镜像。

  • 验证配置文件是否被正确复制
    确保ADD . /app命令将deno.json复制到了容器中。可以在Dockerfile中添加验证步骤:

    RUN ls -la /app
    

    构建时检查输出,确认deno.json存在,避免被.gitignore或.dockerignore排除。

  • 修复deno.json语法错误
    当前imports配置末尾有多余逗号,会导致Deno解析失败。修正后的配置:

    "imports": {
        "$fresh/": "https://deno.land/x/fresh@1.6.8/"
    }
    

内容的提问来源于stack exchange,提问作者redOctober13

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 04:25:04