运行live-server命令启动服务报错env: node\r: 无此文件或目录
错误产生原因
这个报错和public目录是否存在完全无关,核心诱因是跨系统换行符不兼容:
- 类Unix环境(macOS、Linux、WSL、Git Bash等)只识别
LF(\n)作为换行符,而live-server的入口可执行脚本被错误保存成了Windows默认的CRLF(\r\n)换行格式。 - 脚本首行的shebang声明原本为
#!/usr/bin/env node,多余的\r回车符会被系统识别成命令名的一部分,也就是系统会尝试寻找名为node\r的可执行程序,自然匹配不到任何文件,最终抛出该错误。
常见触发场景
- 本地Git配置了
core.autocrlf=true,拉取代码时自动把所有文件的LF换行符转换成了CRLF,连带破坏了node_modules里依赖脚本的格式 - 包管理器安装过程出现异常,写入依赖文件时错用了CRLF换行
- 手动修改过node_modules内live-server的相关文件,保存时选择了CRLF换行格式
修复方案
- 彻底重装对应包:全局安装的live-server执行
npm uninstall -g live-server && npm install -g live-server;项目本地安装的版本直接删除node_modules目录和包锁文件,重新执行npm install即可 - 修正Git换行配置:执行
git config --global core.autocrlf input将全局Git的自动换行规则调整为类Unix兼容模式,避免后续拉取代码再次出现同类问题 - 临时快速修复:安装dos2unix工具后执行
dos2unix $(which live-server),直接把live-server入口脚本的换行符转换成LF格式
内容的提问来源于stack exchange,提问作者user19417266
相关产品推荐
相关产品推荐

