Express应用程序抛出500 TypeError:Object#<EventEmitter>没有方法&#

Express app throws 500 TypeError: Object #<EventEmitter> has no method 'hrtime'

本文关键字:lt EventEmitter 有方法 gt Object# 应用程序 TypeError Express      更新时间:2023-09-26

我的Web应用程序的暂存实例抛出错误:

Express
500 TypeError: Object #<EventEmitter> has no method 'hrtime'
   at Object.logger [as handle] (F:'approot'node_modules'express'node_modules'connect'node_modules'morgan'index.js:96:28)
   at next (F:'approot'node_modules'express'node_modules'connect'lib'proto.js:169:15)
   at Object.favicon [as handle] (F:'approot'node_modules'express'node_modules'connect'node_modules'serve-favicon'index.js:54:44)
   at next (F:'approot'node_modules'express'node_modules'connect'lib'proto.js:169:15)
   at Object.expressInit [as handle] (F:'approot'node_modules'express'lib'middleware.js:30:5)
   at next (F:'approot'node_modules'express'node_modules'connect'lib'proto.js:169:15)
   at Object.query [as handle] (F:'approot'node_modules'express'node_modules'connect'lib'middleware'query.js:43:5)
   at next (F:'approot'node_modules'express'node_modules'connect'lib'proto.js:169:15)
   at Function.handle (F:'approot'node_modules'express'node_modules'connect'lib'proto.js:177:3)
   at Server.app (F:'approot'node_modules'express'node_modules'connect'lib'connect.js:66:37)

morgan/index.js:中的第96行

req._startAt = process.hrtime();

这种情况只发生在我们部署到Azure的副本上。我们可以直接在机器上通过节点运行Express服务器,一切似乎都很完美。

我们在最近的部署中刚刚开始遇到这个问题。知道从哪里开始找吗?在为Express或Morgan搜索Github问题时,我找不到任何类似的问题。谷歌也于事无补。

process.hrtime()仅存在于节点v0.8.x及更新版本中。因此,您需要以某种方式升级到节点的较新版本(最好是最新的稳定版本)。

这是因为版本的原因。尝试更新到当前版本。以下是一些关于如何做出改变的替代方案。

https://blogs.msdn.microsoft.com/azureossds/2016/04/20/nodejs-and-npm-versions-on-azure-app-services/