繁体   English   中英

TypeError:util.promisify不是函数吗?

[英]TypeError: util.promisify is not a function?

我正在尝试在我的react应用程序中承诺zlib.gunzip

const zlib = require('zlib')
const util = require('util')

const gunzipPromisified = util.promisify(zlib.gunzip)

但是我得到这个错误:

TypeError:util.promisify不是一个函数

如果我将其放在一个独立的脚本文件中并通过node运行它,那会很好。

如果我尝试:

import zlib from 'zlib'
import util from 'util'

const gunzipPromisified = util.promisify(zlib.gunzip)

我得到了一些更奇特的东西:

TypeError:__WEBPACK_IMPORTED_MODULE_8_util ___ default.a.promisify不是一个函数

我想念什么?

[编辑]我的笔记本电脑上安装的node.js版本是8.9.1。

[编辑]有人评论说,安装在我本地开发环境中的node.js与应用程序代码在浏览器中可以访问的内容无关。 所以现在我的问题是,如何确定我可以在浏览器中访问的API?

我遇到了同样的问题,它通过将Node更新到高于Node 7的版本来解决。

n latest

在我的情况下,Node 9.2.0是后来添加的。

我在Ionic遇到了同样的问题。 util promisify对我也不起作用,并且产生了与OP相同的错误。 我最终使用了下面复制的这个简单解决方案

const promisify = (fn) => {
 return (...args) => {
    return new Promise((resolve, reject)=>{
      fn(...args, function(err, res){
        if(err){
          return reject(err);
        }
        return resolve(res);
      })
    })
  }
}

接着:

const requestPromisified = promisify(request)

当然,当我切换到bluebird的Promise时,一切正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM