Node.js v18中使用.load命令加载文件为何陷入首行无限循环?
问题原因与解决方案
这不是 Node.js 的 Bug,而是文件换行符格式不兼容导致的问题。
问题根源
Linux 系统默认使用 Unix 风格的 LF(换行)作为行结束符。如果你的 palindrome.js 文件采用了 Windows 风格的 CRLF(回车+换行)换行符,Node REPL 的 .load 命令无法正确识别行结束标记,会反复读取并打印文件第一行,进而陷入无限循环。
解决步骤
检查文件换行符格式:
执行以下命令查看文件的换行符类型:file palindrome.js若输出包含
CRLF line terminators,则确认是 Windows 换行符问题。转换为 Unix 风格换行符:
- 安装并使用
dos2unix工具:sudo apt install dos2unix dos2unix palindrome.js - 或用
sed命令手动替换(无需额外安装):sed -i 's/\r$//' palindrome.js
- 安装并使用
验证修复效果:
重新启动 Node REPL,执行.load palindrome.js,此时文件应该能正常加载,不会出现无限循环。
额外确认
你可以直接运行文件验证代码逻辑本身无问题:
node palindrome.js
若没有报错,说明代码是正确的,问题完全源于换行符格式。
内容的提问来源于stack exchange,提问作者Ben Brown
相关产品推荐
相关产品推荐

