Yesod脚手架启动开发服务器时显示“The application isn’t built”问题求助
解决Yesod开发服务器显示“The application isn’t built”的问题
针对你在WSL2 Ubuntu 20.04 LTS环境下遇到的Yesod开发服务器启动后页面提示“The application isn’t built”的问题,可尝试以下排查和解决步骤:
1. 对齐yesod-bin与项目依赖的版本兼容性
全局安装的yesod-bin(1.6.2.2)可能和项目使用的Stack resolver版本不匹配,导致devel命令无法正确识别构建产物:
- 查看项目根目录
stack.yaml中的resolver字段(比如GHC 9.2.5对应lts-20.x系列) - 使用项目对应的resolver重新安装适配版本的yesod-bin:
之后再执行stack install yesod-bin --resolver <你的resolver版本>stack exec -- yesod devel,确保使用的是适配项目环境的yesod-bin。
2. 检查devel命令的完整输出日志
运行stack exec -- yesod devel时,仔细查看终端输出,排查是否有被警告信息掩盖的编译失败或构建异常细节:
- 是否存在依赖包版本冲突
- 项目中是否有未被测试用例覆盖的编译错误(测试成功不代表所有组件都完成构建)
- 是否因文件权限问题导致构建产物无法写入
3. 彻底清理并全量构建项目
执行更彻底的清理和构建操作,确保所有组件被正确编译:
# 清理所有构建产物和缓存 stack clean --full # 全量构建项目(包含测试、基准组件但不运行) stack build --test --bench --no-run-tests --no-run-benchmarks # 重新启动开发服务器 stack exec -- yesod devel
4. 排查项目存储路径的权限问题
如果项目存储在Windows文件系统(如/mnt/c/目录下),WSL2与Windows文件系统的权限差异可能导致Stack无法正常读写构建产物:
- 将项目迁移到WSL2本地文件系统(如
/home/你的用户名/目录下),重新执行构建和启动步骤。
5. 确认项目devel模式配置
检查项目config/settings.yml文件,确保devel相关配置正确:
- 确认
approot字段设置为http://localhost:3000 - 排查是否有自定义构建钩子或插件干扰devel模式的正常构建
内容的提问来源于stack exchange,提问作者mabe02
相关产品推荐
相关产品推荐

