gpt4 book ai didi

JavaScript:读取文件后尝试返回字符串时未定义类型

转载 作者:太空宇宙 更新时间:2023-11-03 23:48:00 24 4
gpt4 key购买 nike

我是 JavaScript 新手,并且在 Node.JS v12.13.1 中编写 JS 代码。

我正在尝试异步读取文件并通过 promise 返回字符串值。

到目前为止,大多数函数都返回 undefined 值,而其他函数则返回 [object Promise] 值。

writeFile 函数有效,我可以验证 out.txt 包含“测试数据”

我对堆栈溢出帖子进行了研究,但我很困惑。
How to read file with async/await properly?
Using filesystem in node.js with async / await
Using Promises with fs.readFile in a loop

API文档:
https://nodejs.org/api/fs.html#fs_fs_promises_api

有人可以告诉我我缺少什么吗?我将不胜感激,因为我已经通过反复试验进行了大约 3 天的研究。

谢谢!

function writeFile(data) {
const fs = require('fs');
fs.writeFile('out.txt', data, (err) => {
if (err) throw err;
});
}

function readFile1() {
const fs = require('fs').promises;
(async() => {
try {
const result = await fs.readFileSync('out.txt', 'utf8');
console.log(result);
} catch(e) {
console.error(e);
}
})();
}

function readFile2() {
const fs = require('fs');
const { promisify } = require('util');
const readFile = promisify(fs.readFile);

(async() => {
try {
const result = await readFile('out.txt', 'utf8');
console.log(result);
} catch(e) {
console.error(e);
}
})();
}

function readFile3() {
const fs = require('fs');
const util = require('util');
const readFile = util.promisify(fs.readFile);

function getStuff() {
return readFile('out.txt', 'utf8');
}
getStuff().then(data => {
console.log("Inside getStuff Method: "+data);
})
}

function readFile4() {
const fs = require('fs');
const fsPromises = fs.promises;
try {
return fsPromises.readFile('out.txt');
} catch (err) {
console.error('Error occured while reading file!', err);
}
}

async function readFile5() {
const fs = require('fs');
const fsPromises = fs.promises;
let fileHandle = null;
try {
fileHandle = await fsPromises.open('out.txt');
await fileHandle.readFile();
} finally {
if (fileHandle) {
await fileHandle.close();
}
}
return fs.readFileSync('out.txt', 'utf8');
}

writeFile("Test Data");
myString = readFile5();
console.log("The String Value is: " + myString);

最佳答案

以读取模式打开文件

fileHandle = await fsPromises.open('out.txt','r');

然后。

你可以像下面这样做

 async function getPromiseResolved() {
writeFile("Test Data");
myString = await readFile5();
console.log("The String Value is: " + myString);
}

getPromiseResolved()

https://stackoverflow.com/a/29516570/6302996

完整代码

// This is your Editor pane. Write your JavaScript here and 
// use the command line to execute commands

function writeFile(data) {
const fs = require('fs');
fs.writeFile('out.txt', data, (err) => {
if (err) throw err;
});
}

async function readFile5() {
const fs = require('fs');
const fsPromises = fs.promises;
let fileHandle = null;
try {
fileHandle = await fsPromises.open('out.txt', 'r');
await fileHandle.readFile();
} finally {
if (fileHandle) {
await fileHandle.close();
}
}
var myString = await fs.readFileSync('out.txt', 'utf8');
return myString;
}
async function getPromiseResolved() {
writeFile("Test Data");
myString = await readFile5();

console.log("The String Value is: " + myString);
}

getPromiseResolved()

关于JavaScript:读取文件后尝试返回字符串时未定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60329496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com