我对我的npm方案有一个问题,像这样的问题,但我不知道如何解决
What is Unhandled Promise Rejection
这是我的index.js:
'use strict';
var got = require('got');
var registryUrl = require('registry-url');
var Promise = require('pinkie-promise');
module.exports = function (name) {
if (typeof name !== 'string') {
return Promise.reject(new Error('username required'));
}
return got.head(registryUrl + name.toLowerCase())
.then(function (res) {
return 'test';
})
.catch(function (err) {
if (err.statusCode === 404) {
err.message = 'Package doesn\'t exist';
}
throw err;
});
};这是我的cli.js
#!/usr/bin/env node
'use strict';
var pkg = require('./package.json');
var info = require('./');
var argv = process.argv.slice(2);
var input = argv[0];
function help() {
console.log(pkg.description);
console.log('');
console.log('Usage');
console.log(' $ package-info <package-name>');
console.log('');
console.log('Example');
console.log(' $ package-info pageres');
}
if (!input || argv.indexOf('--help') !== -1) {
help();
return;
}
if (process.argv.indexOf('-v') !== -1 || process.argv.indexOf('--version') !== -1) {
console.log(pkg.version);
return;
}
info(input, function (err, version) {
if (err) {
console.error(err);
process.exit(1);
return;
}
console.log(version);
});如果我试图在本地安装:
npm install . -g
npm link然后改变目录并安装:
cd ../otherDir
npm install ../my-package并发射它
my-package somePackage我明白了:
(node:2145) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): RequestError: getaddrinfo ENOTFOUND function function:80我该怎么解决呢?
发布于 2017-03-17 23:43:36
您无法正确捕获cli文件中的错误。事实上,您根本不处理返回的承诺,而是传递一个未使用的回调。试着改变
info(input, function (err, version) {
if (err) {
console.error(err);
process.exit(1);
return;
}
console.log(version);
});至
info(input)
.then(version => console.log(version))
.catch(err => {
console.error(err);
process.exit(1);
});这是因为在您捕捉到info函数中的错误之后,您会再次抛出它,并将其抛到更深的链中。
https://stackoverflow.com/questions/42868449
复制相似问题