我使用以下代码正常工作
var ncp = require('ncp').ncp;
function load(folderPath) {
ncp.limit = 16;
var path = require('path');
var localPath = path.join(__dirname, '../pl');
ncp(folderPath, localPath, {dereference: false}, function (err) {
if (err) {
return console.error(err);
}
console.log('done to save the files!');
});
};
我想使用promise而不是回调,但在使用以下内容时出现错误
var Promise = require('bluebird');
var ncp = Promise.promisifyAll(require('ncp').ncp);
function load(folderPath) {
ncp.limit = 16;
var localPath = path.join(__dirname, '../pl');
ncp(folderPath, localPath, {dereference: false})
.then(function (result) {
console.log('done to save the files!');
})
.catch(function (err) {
console.err(err);
});
};
错误是:
TypeError: Cannot read property 'then' of undefined
答案 0 :(得分:0)
Promise.promisifyAll()
用于宣传对象。它将迭代对象并宣传该对象上的所有函数属性。
但是,ncp
本身就是一个功能,它没有属性,所以promisifyAll()
不会这样做。您正在寻找以函数作为参数的promisify()
,并返回一个promisified函数。
所以你需要做的就是改变
var ncp = Promise.promisifyAll(require('ncp').ncp);
到
var ncp = Promise.promisify(require('ncp').ncp);