部署Fresh项目时出现相对导入路径错误的求助
解决Fresh项目部署时的
$fresh/server.ts导入错误 问题原因
部署时出现的Relative import path "$fresh/server.ts" not prefixed with / or ./ or ../错误,本质是Deno Deploy未正确读取根目录下deno.json中的导入映射。本地运行时Deno会自动识别根目录的deno.json,但部署流程中,当入口文件位于子目录时,deployctl可能无法自动关联根目录的导入配置,导致$fresh别名被当作相对路径处理。
你尝试的deno.importMap方案无效,是因为该方案针对的是使用独立import_map.json文件的场景,而你的项目直接将导入配置写在deno.json中,两者不匹配。
解决方案
1. 在部署步骤中显式指定导入映射
修改.github/workflows/deploy.yaml中的Deploy步骤,添加import-map参数指向根目录的deno.json:
- name: Upload to Deno Deploy uses: denoland/deployctl@v1 with: project: "tranky" entrypoint: "./1/Web/main.ts" import-map: "./deno.json" # 新增该行,指定导入映射文件
这会强制deployctl使用根目录的导入配置,确保$fresh别名被正确解析。
2. 验证构建步骤的工作目录
确保deno task build在仓库根目录执行(当前配置已满足,actions/checkout默认将代码克隆到根目录,后续步骤均在此目录运行)。若构建时工作目录错误,生成的产物可能包含无效路径引用。
额外检查
- 确认
deno.json中的$fresh/映射路径正确:"$fresh/": "https://deno.land/x/fresh@1.6.1/",末尾的斜杠不能省略,否则无法正确解析server.ts这类子路径。 - 检查
1/Web/main.ts及其他文件中是否存在拼写错误的$fresh导入语句。
内容的提问来源于stack exchange,提问作者Ooker
相关产品推荐
相关产品推荐

