Javascript 从文件读取时未定义
我是Node.js新手,试图从文件中读取字符串和数据,控制台也在打印“未定义”。每当我注释掉readFile函数时,这个错误/警告就会消失,这样我就可以确定在读取文件时我做错了什么 filehandleing.jsJavascript 从文件读取时未定义,javascript,node.js,file-handling,Javascript,Node.js,File Handling,我是Node.js新手,试图从文件中读取字符串和数据,控制台也在打印“未定义”。每当我注释掉readFile函数时,这个错误/警告就会消失,这样我就可以确定在读取文件时我做错了什么 filehandleing.js const fs=require('fs'); 函数writeIntoFile(str){ fs.writeFile('./File.txt',str,函数(err){ 如果(错误){ console.log(“发生错误”); //log(`无法写入文件${err}`); }否则{
const fs=require('fs');
函数writeIntoFile(str){
fs.writeFile('./File.txt',str,函数(err){
如果(错误){
console.log(“发生错误”);
//log(`无法写入文件${err}`);
}否则{
log(“写入文件”);
}
});
}
函数readFromFile(){
fs.readFile('File.txt',函数(err,data){
如果(错误){
控制台日志(err);
}
log(“数据读取:+Data.toString());
});
}
module.exports.writeIntoFile=writeIntoFile;
module.exports.readFromFile=readFromFile
它打印未定义的
,因为您实际上是在打印函数readFromFile
的返回值,该函数不返回任何内容。在readFromFile
函数中,您的代码可以在打印文件时正确读取文件
function readFromFile() {
fs.readFile('File.txt', function (err, data) {
if (err) {
console.log(err);
}
console.log("Data read: " + data.toString());
^^^^^^^^^^^^^
you are printing the correct content of your file here
});
}
如果您想返回文件的内容,请考虑<代码> fs.Read Fixs/COD>的同步对应项,即<代码> fs。那你就可以做了
function readFromFile() {
return fs.readFileSync('File.txt', 'utf-8');
}
您的代码不再打印未定义的
此外,您的代码有一个输入错误:const fh=require(“./filehandleing”)代码>必须是const fh=require('./filehandling')代码>
编辑:
同步readFile
现在确实不起作用。问题是writeFile
仍然是异步的,并且永远无法实际写入文件。如何解决这个问题有几种可能。其中两个正在切换到同步写入文件或给异步版本一个回调
同步写入
filehandling.js
const fs = require('fs');
function writeIntoFile(str) {
fs.writeFileSync('./File.txt', str);
}
function readFromFile() {
return fs.readFileSync('File.txt', 'utf-8');
}
module.exports.writeIntoFile = writeIntoFile;
module.exports.readFromFile = readFromFile;
const fs = require('fs');
function writeIntoFile(str, callback) {
fs.writeFile('./File.txt', str, callback);
}
function readFromFile() {
return fs.readFileSync('File.txt', 'utf-8');
}
module.exports.writeIntoFile = writeIntoFile;
module.exports.readFromFile = readFromFile;
app.js
const fh = require('./filehandling');
fh.writeIntoFile(`Sum of Numbers is 4`);
console.log(fh.readFromFile());
const fh = require('./filehandling');
fh.writeIntoFile(`Sum of Numbers is 4`, err => {
if (err) {
throw err;
}
console.log(fh.readFromFile());
});
回调
filehandling.js
const fs = require('fs');
function writeIntoFile(str) {
fs.writeFileSync('./File.txt', str);
}
function readFromFile() {
return fs.readFileSync('File.txt', 'utf-8');
}
module.exports.writeIntoFile = writeIntoFile;
module.exports.readFromFile = readFromFile;
const fs = require('fs');
function writeIntoFile(str, callback) {
fs.writeFile('./File.txt', str, callback);
}
function readFromFile() {
return fs.readFileSync('File.txt', 'utf-8');
}
module.exports.writeIntoFile = writeIntoFile;
module.exports.readFromFile = readFromFile;
app.js
const fh = require('./filehandling');
fh.writeIntoFile(`Sum of Numbers is 4`);
console.log(fh.readFromFile());
const fh = require('./filehandling');
fh.writeIntoFile(`Sum of Numbers is 4`, err => {
if (err) {
throw err;
}
console.log(fh.readFromFile());
});
是不是错误未定义
?你的问题不太清楚这是否回答了你的问题@PaulFitzgerald输出的第二行显示未定义,这是我感到困惑的地方。我已经尝试了fs.readfileSync函数,但它完全停止了打印。是的,抱歉,代码没有按原样工作。我编辑了我的答案