You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js的forEach输出在Raspbian系统异常但Windows系统运行正常

问题原因

这是换行符跨平台标准不一致导致的问题:

  • Windows系统默认文本换行符为\r\n(CRLF),Linux(含Raspbian)默认文本换行符为\n(LF),你代码里硬编码了\r\n作为拆分和写入的换行符,跨平台运行时就会出现解析异常。
  • 你在Raspbian上输出异常的本质是:拆分后每个内容项末尾残留了未被正确处理的\r回车符,终端输出时\r会将光标移到当前行首,后续console.log自带的换行符就会把内容拆成两行,最终呈现test:单独占一行,内容跑到下一行的异常效果。
修复方案
  1. 读取文件时统一换行符处理,避免硬编码拆分规则:
    将原有读取拆分代码
var data = fs.readFileSync('./txt/wordlist.txt', 'ascii').toString().split("\r\n"); 

修改为:

// 先把所有CRLF统一替换为LF,再按LF拆分,适配所有平台的换行格式
var data = fs.readFileSync('./txt/wordlist.txt', 'ascii').toString().replace(/\r\n/g, '\n').split("\n");
  1. 写入文件时使用系统原生换行符,自动适配运行环境:
    首先引入Node.js内置os模块:
const os = require('os');

将原有写入代码

fs.appendFileSync('./txt/wordlist.txt',`\r\n${a}`,'ascii');

修改为:

// os.EOL会自动返回当前系统对应的换行符
fs.appendFileSync('./txt/wordlist.txt', `${os.EOL}${a}`, 'ascii');
  1. 修正无效的非空判断逻辑:
    你原有if(filtered!="")的逻辑是错误的,数组与空字符串对比永远返回true,建议替换为:
if (filtered.length > 0)

内容的提问来源于stack exchange,提问作者Aelux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 08:15:07