WSL环境运行Elixir执行mix deps.get找不到dev\r.exs文件求助
问题原因与解决方案
错误原因
错误中的\r是Windows系统的回车控制符,该问题是跨系统换行符不兼容导致的:Windows系统默认换行格式为CRLF(\r\n),而WSL的Linux环境默认换行格式为LF(\n)。你的配置文件使用了Windows风格换行,Elixir解析配置时把行尾的\r识别成了文件名的一部分,才会尝试读取不存在的dev\r.exs文件。
解决方案
1. 转换现有文件换行符(临时修复)
- 先在WSL终端安装换行符转换工具:
sudo apt install dos2unix - 进入项目根目录,转换所有配置文件的换行符为Linux兼容格式:
dos2unix config/*.exs
2. 配置git规则避免复发
如果你的项目通过git管理,可以配置换行符规则从根源避免同类问题:
- 如果你主要在WSL环境开发,全局配置git自动处理换行符:
该配置会在提交代码时自动把CRLF转为LF,拉取代码时不做转换,适配Linux/WSL环境。git config --global core.autocrlf input - 如果需要Windows和WSL混用开发,可以在项目根目录新增
.gitattributes文件,添加以下规则指定Elixir相关文件统一使用LF换行:*.ex text eol=lf *.exs text eol=lf
3. 验证修复结果
执行以下命令查看配置文件换行符,正常LF格式的行尾会显示为$,如果显示^M$说明还存在未转换的\r:
cat -A config/config.exs
修复完成后再重新执行mix deps.get即可正常运行。
内容的提问来源于stack exchange,提问作者OliOli
相关产品推荐
相关产品推荐

