Node.js读取文件返回Undefined问题求助
Node.js读取文件返回Undefined问题求助
嘿,我看了你的代码和问题描述,马上就发现了核心问题——你的readFile函数没有返回值!这就是为什么console.log(input)会输出undefined的原因。
咱们来拆解一下:你在try块里执行了data.toString(),但这行代码只是把读取到的Buffer转换成了字符串,却没有把这个结果返回给函数调用者。JS里的函数如果没有显式的return语句,默认就会返回undefined,所以你调用readFile()的时候自然拿不到文件内容。
修正后的代码
把函数里的转换操作改成返回语句,同时可以优化编码处理(直接指定utf8编码,省去手动转字符串的步骤):
const fs = require('fs'); function readFile(filePath) { try { // 直接指定utf8编码,读取后直接是字符串,无需再toString() const data = fs.readFileSync(filePath, 'utf8'); return data; } catch (error) { console.error(`Got an error trying to read the file: ${error.message}`); // 出错时返回null,方便后续判断是否读取成功 return null; } } const input = readFile('G:/My Drive/Visual Studio Code/Advent of Code/2022/day05.txt'); console.log(input);
额外提示:转成数组
如果你想把文件内容按行转成数组,可以在拿到input后做分割处理:
if (input) { // 按换行符分割成数组,同时过滤掉空行 const fileArray = input.split('\n').filter(line => line.trim() !== ''); console.log(fileArray); }
关于你提到的“之前没问题现在突然不行”,大概率是之前的代码里有return语句,后来不小心删掉了;至于Google Drive的路径,只要文件是同步完成的,你现在的路径写法也没问题,应该不是这个导致的问题。
备注:内容来源于stack exchange,提问作者helloworld
相关产品推荐
相关产品推荐

