即使导入模块后也未定义类型错误读取文件

时间:2018-11-08 07:10:17

标签: 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模块,但是出现以下错误

TypeError: Cannot read property 'readFile' of undefined

2)我教过删除.promises,然后它就无法处理,请帮助我

2 个答案:

答案 0 :(得分:1)

我的立场是正确的,但是AFAIK在 FS Promises 中添加了 nodejs V10.x API:

如果您希望该功能正常运行,则必须将nodejs升级到 版本 10.x or higher 。另外请注意,它位于 experimental 标志的后面,因此您必须对其进行处理。

答案 1 :(得分:0)

我认为您的问题是,您导出的不是整个fs模块,而是一些promises作为fs模块。尝试更改

const fs = require('fs').promises

const fs = require('fs')

fs.readFile作为异步函数,但它不返回promise,因此您不能await。它具有一个回调参数,当函数完成执行时将执行该回调参数。因此,您可以将其包装在Promise中,以使用await等待它:

await new Promise(resolve=>
    fs.readFile('./fundsReleaseTx.x', { encoding: 'base64' },
resolve)

或者您可以只使用fs.readFileSync来阻止进一步的代码执行,直到它完成工作为止,因此您不需要任何其他技巧即可等待它。