Render.com Web 服务部署上的 Node.js Google API 中的解码器例程“ERR_OSSL_UNSUPPORTED”(本地工作)

问题描述 投票:0回答:0

我的 Node.js 应用程序使用 Google API 在 Google 云端硬盘上创建文档时遇到问题。在我的本地环境中一切正常,但是当我在 Render.com 上部署时,遇到 OpenSSL 错误。

相关代码如下:


const { google } = require("googleapis");
require("dotenv").config();

async function uploadToDocs(content, isTest) {
  const google_private_key = process.env.google_private_key.replace(/\\n/g, "\n");
  console.log(  google_private_key)
  try {
    const jwtClient = new google.auth.JWT(
      process.env.google_client_email,
      null,
      process.env.google_private_key,
      [
        "https://www.googleapis.com/auth/documents",
        "https://www.googleapis.com/auth/drive",
      ],
      null
    );

    await jwtClient.authorize();

    console.log("authorized");

    return await createReport(jwtClient, content, isTest);
  } catch (err) {
    console.error("Error in uploadToDocs:", err);
  }
}

还有我的 .env 文件:


google_private_key="-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSj ... sg=\n-----END PRIVATE KEY-----\n"
google_client_email=service-account@gatecap-automations.iam.gserviceaccount.com

当应用程序尝试使用 Google 的服务对 JWT 客户端进行身份验证时,会出现该错误。抛出的错误与 OpenSSL 的解码器例程有关:错误:1E08010C:DECODER例程::不支持。

这是错误堆栈跟踪:


Error in uploadToDocs: Error: error:1E08010C:DECODER routines::unsupported at Sign.sign (node:internal/crypto/sig:131:29) at Object.sign (/usr/src/app/node_modules/jwa/index.js:152:45) at Object.jwsSign [as sign] (/usr/src/app/node_modules/jws/lib/sign-stream.js:32:24) at GoogleToken.requestToken (/usr/src/app/node_modules/gtoken/build/src/index.js:232:31) at GoogleToken.getTokenAsyncInner (/usr/src/app/node_modules/gtoken/build/src/index.js:166:21) at GoogleToken.getTokenAsync (/usr/src/app/node_modules/gtoken/build/src/index.js:145:55) at GoogleToken.getToken (/usr/src/app/node_modules/gtoken/build/src/index.js:97:21) at JWT.refreshTokenNoCache (/usr/src/app/node_modules/google-auth-library/build/src/auth/jwtclient.js:172:36) at JWT.refreshToken (/usr/src/app/node_modules/google-auth-library/build/src/auth/oauth2client.js:146:25) at JWT.authorizeAsync (/usr/src/app/node_modules/google-auth-library/build/src/auth/jwtclient.js:153:35) at JWT.authorize (/usr/src/app/node_modules/google-auth-library/build/src/auth/jwtclient.js:149:25) at uploadToDocs (/usr/src/app/newsLog/uploadToDocs.js:24:21) at /usr/src/app/app.js:35:25 at Layer.handle [as handle_request] (/usr/src/app/node_modules/express/lib/router/layer.js:95:5) at next (/usr/src/app/node_modules/express/lib/router/route.js:144:13) at Route.dispatch (/usr/src/app/node_modules/express/lib/router/route.js:114:3) at Layer.handle [as handle_request] (/usr/src/app/node_modules/express/lib/router/layer.js:95:5) at /usr/src/app/node_modules/express/lib/router/index.js:284:15 at Function.process_params (/usr/src/app/node_modules/express/lib/router/index.js:346:12) at next (/usr/src/app/node_modules/express/lib/router/index.js:280:10) at urlencodedParser (/usr/src/app/node_modules/body-parser/lib/types/urlencoded.js:82:7) at Layer.handle [as handle_request] (/usr/src/app/node_modules/express/lib/router/layer.js:95:5) { library: 'DECODER routines', reason: 'unsupported', code: 'ERR_OSSL_UNSUPPORTED' }

我尝试过: -将私钥直接硬编码到代码中。 -本地从 LibreSSL 切换到 OpenSSL 以匹配渲染上的版本 (OpenSSL 1.1.1n)。

  • 在渲染服务设置中的环境变量周围添加引号。 这些操作都没有改变或解决错误。

我将不胜感激任何指导或支持!

node.js google-api jwt google-docs-api render.com
© www.soinside.com 2019 - 2024. All rights reserved.