将 bluebird 与 ncp 一起使用时出错
Error while using bluebird with ncp
我使用下面的代码,运行正常
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
Promise.promisifyAll()
用于承诺 objects。它将迭代对象并承诺该对象的所有函数属性。
但是ncp
本身就是一个函数,它没有属性,所以promisifyAll()
不行。您正在寻找将函数作为参数的 promisify()
,以及 returns 一个 promisified 函数。
所以你需要做的就是改变
var ncp = Promise.promisifyAll(require('ncp').ncp);
到
var ncp = Promise.promisify(require('ncp').ncp);
我使用下面的代码,运行正常
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
Promise.promisifyAll()
用于承诺 objects。它将迭代对象并承诺该对象的所有函数属性。
但是ncp
本身就是一个函数,它没有属性,所以promisifyAll()
不行。您正在寻找将函数作为参数的 promisify()
,以及 returns 一个 promisified 函数。
所以你需要做的就是改变
var ncp = Promise.promisifyAll(require('ncp').ncp);
到
var ncp = Promise.promisify(require('ncp').ncp);