Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 即使在导入模块后,也未定义类型错误读取文件_Node.js_Promise - Fatal编程技术网

Node.js 即使在导入模块后,也未定义类型错误读取文件

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模块,但出现

以下代码是在节点版本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) 我教过删除。承诺然后它无法处理等待请帮助我

我想你的问题是你导出的不是整个
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)