NodeJs util.promisify不是一个函数

Ele*_*ega 19 javascript mysql node.js

我正在尝试宣传一个mysql函数,但是当我运行它时,控制台会显示此错误util.Promisify is not a function.这是我的代码:

var util=			require('util');
var mysql=          require('mysql');

var conection=mysql.createConnection({           
				host:'localhost',                   
				user:'root',                        
				password:'616897',               
				database:'proyect'                    
	});
  
  var query = util.promisify(conection.query);
  
  query(data.valida_user).then((rows)=>{
	console.log(rows);
}).catch((error)=>{
	console.log(error);
})
Run Code Online (Sandbox Code Playgroud)

如果相同的错误 var query = util.promisify(mysql.query);

我是新编程但我正在努力学习.

zub*_*024 27

util.promisify是Node 8.X版本的一部分.但是您仍然可以为旧版本的Node提供polyfill.

polyfill可用于处理您将运行应用程序的旧版本节点服务器.它可以通过以下方式通过npm安装:

npm install util.promisify
Run Code Online (Sandbox Code Playgroud)

现在,您可以在旧版本的Node上修补模块utl

const util = require('util');
require('util.promisify').shim();

const fs = require('fs');
const readFileAsync = util.promisify(fs.readFile);
Run Code Online (Sandbox Code Playgroud)

引自http://grizzlybit.info/2017/09/29/Node-JS-8-Util-Promisify/


tad*_*man 7

除非您使用Node.js 8.x,否则将不会定义此函数,即将其添加到核心Utilities库时.

作为util核心Node.js库,您不必安装它.如果您正在使用Node.js 6.x,那么使用像Bluebird这样具有promisify功能的库.


ric*_*ver 5

其他人已经说过解决方案,但这是此错误的另一个来源:

有一个NPM软件包es6-promisify也可以给出错误消息TypeError: promisify is not a function。(这就是为什么我要问这个问题。)

  • 需要const promisify = require("es6-promisify");使用es6-promisifiy版本5.0.0,然后使用result = promisify( ... );

  • 版本6.0.0更改了API,并且声明更改为 const { promisify } = require("es6-promisify");