node中使用typescript的error类型问题?

作者站长头像
站长
· 阅读数 10

如题,最近在学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之后就会提示:node中使用typescript的error类型问题?

我在nodejs的官方文档中看到这里的error应该是systemError,node中使用typescript的error类型问题?

但是我在node的声明文件中也没有找到有关Error或者SystemError的接口或是类型(也有可能是我找的方式不对),理论上把error定义成any就可以不报错,但是我不想把typescript写成anyscript,我想问下路过的大佬有知道这这种情况改怎么解决的吗?

回复
1个回答
avatar
test
2024-07-14

找到解决方法了,在nodemodule/@types/node文件夹中全局搜syscall,然后搜到了接口ErrnoException,

answer image

然后给error加上类型:NodeJS.ErrnoException:

answer image

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容