Node.js 即使在导入模块后,也未定义类型错误读取文件
以下代码是在节点版本8中编写的Node.js 即使在导入模块后,也未定义类型错误读取文件,node.js,promise,Node.js,Promise,以下代码是在节点版本8中编写的 const fs = require('fs').promises const [, pairA] = require('./pairs.json') const accountASignsTx = async (secret) => { const fundsReleaseTx = await fs.readFile('./fundsReleaseTx.x', { encoding: 'base64' }) 我已导入readfile模块,但出现
const fs = require('fs').promises
const [, pairA] = require('./pairs.json')
const accountASignsTx = async (secret) => {
const fundsReleaseTx = await fs.readFile('./fundsReleaseTx.x', { encoding: 'base64'
})
我已导入readfile模块,但出现以下错误
TypeError: Cannot read property 'readFile' of undefined
2) 我教过删除。承诺然后它无法处理等待请帮助我我想你的问题是你导出的不是整个
fs
模块,而是一些承诺
作为fs模块。尝试改变
const fs = require('fs').promises
到
同样fs.readFile
也是异步函数,但它不会返回承诺,因此您不能等待它。它有一个回调参数,该参数将在函数完成执行时执行。因此,您可以使用wait
将其包装为承诺等待:
await new Promise(resolve=>
fs.readFile('./fundsReleaseTx.x', { encoding: 'base64' },
resolve)
或者你可以直接使用
fs.readFileSync
,它会阻止进一步的代码执行,直到它完成它的工作,这样你就不需要任何额外的技巧来等待它了。我的观点是正确的,但是,顺便说一句,fs-Promises
API是在nodejs V10.x
中添加的:
如果您想让nodejs功能正常工作,您必须将其升级到版本
10.x或更高版本
。还请注意,它位于实验性
标志的后面,因此您必须处理它。他想要的是promisified
版本,并且它存在,只是不在nodejs的该版本中,不清楚他想要什么。OPs代码使用了这两种方法,因此我的答案是“传统的”(就目前而言)。感谢它帮助了我,我们可以用它做同样的事情。然后,如果不使用它,它确实存在于文档fsPromises.readFile
中,并标记为添加到:v10.0.0
。那么也许你应该扩展你的答案来展示如何使用它?@SET-我不认为有必要。如果他升级nodejs,它将按预期工作。谢谢你注意到实验性的
标志部分,这正是让我绊倒的地方。
await new Promise(resolve=>
fs.readFile('./fundsReleaseTx.x', { encoding: 'base64' },
resolve)