如题,最近在学typescript,用koa-generator建立了一个项目,然后安装typescript,@types/node,把项目里面的js都改成了ts,bin/www也被我改成了www.ts,这个文件中有个onerror事件,代码如下:
server.on('error', onError);
function onError(error) {
console.log('onError', error)
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
这段代码在js中没啥问题,改成ts之后就会提示:
我在nodejs的官方文档中看到这里的error应该是systemError,
但是我在node的声明文件中也没有找到有关Error或者SystemError的接口或是类型(也有可能是我找的方式不对),理论上把error定义成any就可以不报错,但是我不想把typescript写成anyscript,我想问下路过的大佬有知道这这种情况改怎么解决的吗?
找到解决方法了,在nodemodule/@types/node文件夹中全局搜syscall,然后搜到了接口ErrnoException,
然后给error加上类型:NodeJS.ErrnoException: