我有一个2MB的html文件,节点无法读取。
我尝试过的事情:
const fs = require('fs');
const file_name = process.argv[2];
let blob = fs.readFileSync(file_name, 'utf8')
console.log(blob)
这会在终端上显示“未定义”
我也尝试过非同步版本:
const fs = require('fs');
const file_name = process.argv[2];
fs.readFile(file_name, 'utf8', function (err, data) {
if (err) {
console.log(err)
return false
}
console.log(data)
});
这也会打印“未定义”
当我尝试其他html文件时,它没有任何问题。
我该怎么办?是否有任何特定的字符串模式导致节点无法读取文件?
答案 0 :(得分:1)
尝试使用文件的完整路径
例如
// Dependencies
const fs = require('fs');
const path = require('path');
// Add current path to filename
const file_name = path.join(__dirname, process.argv[2]);
// Check if file exist
fs.exists(file_name, function (file) {
if (file) {
// Read file with file_name
fs.readFile(file_name, 'utf8', function (err, data) {
if (err) {
console.log(err);
return false;
}
console.log(data);
});
}
else{
console.log("file not found");
return false;
}
});
答案 1 :(得分:0)
您可以在fs.readFile
块内使用fs.readFileSync('./db/user.json');
来代替try ... catch
。
const fetchAllUser = () => {
// if file doesn't exists we have to write try catch
try {
// path should be relative to app.js / index.js (entry file)
let userString = fs.readFileSync('./db/user.json');
return JSON.parse(userString);
} catch (e) {
console.log(`No database available`);
return [];
}
};