fsPromises.writeFile Node v12.13.0 中未调用回调
fsPromises.writeFile callback not being called in Node v12.13.0
无论出于何种原因,fs.promises
的回调都没有被调用,但文档中没有提到只有在出现错误时才会调用它,而这正是我假设会发生的...
fsp.writeFile('test.txt', 'callback doesnt work', 'utf8', (error) => {
console.log('callback is never called')
if (error) console.error(error)
})
这在 Node 12.13.0 版本上正在发生(或未发生,哈哈)。
有人知道这是怎么回事吗?
fs.promises
版本的异步调用 return 承诺。他们不接受回调。如果您想使用回调,请使用常规 fs
版本。
您可以看到 right here in the doc 没有选项可以为 API 的 fsPromises 版本传递回调。
你应该这样做:
const fsp = require('fs').promises;
fsp.writeFile('test.txt', 'promise works', 'utf8').then(() => {
console.log("write successful");
}).catch(err => {
console.error(err);
});
或者,在 async
函数内,您可以使用 try/catch
和 await
而不是 .then()
和 .catch()
。
无论出于何种原因,fs.promises
的回调都没有被调用,但文档中没有提到只有在出现错误时才会调用它,而这正是我假设会发生的...
fsp.writeFile('test.txt', 'callback doesnt work', 'utf8', (error) => {
console.log('callback is never called')
if (error) console.error(error)
})
这在 Node 12.13.0 版本上正在发生(或未发生,哈哈)。
有人知道这是怎么回事吗?
fs.promises
版本的异步调用 return 承诺。他们不接受回调。如果您想使用回调,请使用常规 fs
版本。
您可以看到 right here in the doc 没有选项可以为 API 的 fsPromises 版本传递回调。
你应该这样做:
const fsp = require('fs').promises;
fsp.writeFile('test.txt', 'promise works', 'utf8').then(() => {
console.log("write successful");
}).catch(err => {
console.error(err);
});
或者,在 async
函数内,您可以使用 try/catch
和 await
而不是 .then()
和 .catch()
。