微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Hapi.js 无法读取 null 的属性“statusCode”

如何解决Hapi.js 无法读取 null 的属性“statusCode”

我正在使用 hapi.js 和 mongodb 创建一个 node.js api 服务器,但在 Amazon EC2 上运行时遇到了一些问题。 在本地运行它可以工作,但如果我在 EC2 实例上运行它,我会收到错误 TypeError: Cannot read property 'statusCode' of null

完整的堆栈跟踪如下:

TypeError: Cannot read property 'statusCode' of null
  at Request._finalize (/home/ec2-user/backend/node_modules/@hapi/hapi/lib/request.js:497:31)
  at Request._reply (/home/ec2-user/backend/node_modules/@hapi/hapi/lib/request.js:434:18)
  at Request._execute (/home/ec2-user/backend/node_modules/@hapi/hapi/lib/request.js:280:14)
  at processticksAndRejections (node:internal/process/task_queues:93:5)

奇怪的部分是 GET 请求正在工作,而 PUT、POST 和 DELETE 正在抛出上述错误。 我已将 server.js 设置如下:

...
const init = async () => {

    const server = Hapi.server({
        port: 3000,});

    //server.route(routes);

    server.route([
      {
        method: "GET",path: "/test",handler: async (request,h) => {
          return "workin GET";
        },},{
        method: "PUT",h) => {
          return "workin PUT";
        },{
        method: "POST",h) => {
          return "workin POST";
        },{
        method: "DELETE",h) => {
          return "workin DELETE";
        },]);

    await server.start();
    console.log('Server running on %s',server.info.uri);
};

process.on('unhandledRejection',(err) => {
    console.log(err);
    process.exit(1);
});

init();

有什么解决办法吗?

解决方法

我发现在 EC2 实例上我安装了节点版本 15.5.0,它显然与 hapi.js 的最新版本 (20.0.2) 不兼容。

要解决此问题,只需安装节点版本 14.15.3

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。