在nodejs(express)中的Auth0中间件给出错误:aggrinfo ENOTFOUND

我在快速API中使用中间件来validationauth0

const checkJwt = jwt({ // Dynamically provide a signing key based on the kid in the header and the singing keys provided by the JWKS endpoint. secret: jwksRsa.expressJwtSecret({ cache: true, rateLimit: true, jwksRequestsPerMinute: 5, jwksUri: `https://${process.env.AUTH0_DOMAIN}/.well-known/jwks.json` }), // Validate the audience and the issuer. audience: process.env.AUTH0_AUDIENCE, issuer: `https://${process.env.AUTH0_DOMAIN}/`, algorithms: ['RS256'] }); 

  server.use('/api', checkJwt, routes); 

它在我的本地开发机器上工作,但是当我在生产中运行时,我得到:

 Error: getaddrinfo ENOTFOUND undefined undefined:443 at errnoException (dns.js:28:10) at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26) 

我在生产中运行ubuntu 12,在开发中运行mac。

您似乎忘了在生产系统上设置AUTH0_DOMAIN环境变量。

你的代码根据github的例子是正确的,

但在这个例子中有很多的环境变量设置运行这个代码部分。

DEBUG=express,jwks JWKS_HOST=https://my-authz-server AUDIENCE=urn:my-resource-server ISSUER=https://my-authz-server/ node server.js

启动应用程序之前,请检查您的生产配置。

getaddrinfo ENOTFOUND

这是在请求的服务器地址无法连接时出现的基本的Internet传输协议错误。 可以是一个非常简单的错误,可以是完全复杂的东西:

  • 在主机系统上没有互联网连接
  • 主机系统没有权限发送请求
  • 没有客户端系统接受请求的权限(比如,如果一个vpc的一部分阻止公共领域)

错误:getaddrinfo ENOTFOUND undefined undefined:443

  • 未定义的undefined显示传递给系统试图连接到的URL没有被定义。

我认为问题是解析,因为显示的代码块是注释你正在提供的URI,请尝试这个:

 const uri = "https:\/\/"+${process.env.AUTH0_DOMAIN}+"/.well-known/jwks.json" const checkJwt = jwt({ // Dynamically provide a signing key based on the kid in the header and the singing keys provided by the JWKS endpoint. secret: jwksRsa.expressJwtSecret({ cache: true, rateLimit: true, jwksRequestsPerMinute: 5, jwksUri: uri }), // Validate the audience and the issuer. audience: process.env.AUTH0_AUDIENCE, issuer: `https://${process.env.AUTH0_DOMAIN}/`, algorithms: ['RS256'] }); 

对于jwt选项中的发行者类似的编辑