Typescript 和 Googleapis 使用的内存激增

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

我们已经跟踪内存不足错误一段时间了,该错误似乎在构建步骤中时不时发生。
我们终于确定了提交。上述提交导致

tsc --alwaysStrict
构建从完成构建所需的 175MB (RAM) 增加到 656MB。

该提交仅将

googleapis
库添加到
package.json
并像这样
import { google } from "googleapis";
一样使用它。仅这两个变化就造成了这一峰值。

我们看到的另一件事是,在

package.json
上包含库使构建增加了 100MB,但是,一旦我们添加
import
,它就会一路上升到 600MB。
重要的是要说我们只对 gSheets 感兴趣。

我看到了一些未来的选择,但我不喜欢其中任何一个:

  1. 增加服务器的RAM(当前为1GB)
  2. 为此目的使用自定义或非官方库

还有其他方法可以解决这个问题吗?

node.js typescript google-sheets-api
2个回答
6
投票

我遇到了同样的问题,不过对我来说,问题是在运行 jest 单元测试时出现的,即使是最简单的测试也会消耗高达 1GB 的内存并导致我们的 CI 机器崩溃。

似乎取得了一些进展,您现在可以从 @googleapis 导入特定模块

看:https://github.com/googleapis/google-api-nodejs-client/issues/2187

例如: https://www.npmjs.com/package/@googleapis/drive https://www.npmjs.com/package/@googleapis/calendar

还没尝试过,但希望能解决问题。

编辑: 尝试使用我上面提到的特定于服务的软件包,它的效果非常好。尝试一下


0
投票

我解决了你的问题。

googleapis库是一个涵盖几乎所有Google服务的库。如果您只使用一个 Google API,那么您不需要使用所有模块。

这里,我只使用了oAuth2功能。所以只需导入相关模块即可。

import { auth } from 'googleapis/build/src/apis/oauth2'
import { APP_BASE_URL, GOOGLE_AUTH_CLIENT_ID, GOOGLE_AUTH_CLIENT_SECRET } from '@/constants/environments'

export const GOOGLE_AUTH_SCOPES: string[] = [
    'https://www.googleapis.com/auth/userinfo.email',
    'https://www.googleapis.com/auth/userinfo.profile'
]

/**
 * Create oAuth2 Client.
 */
const callbackUrl = `${APP_BASE_URL}/auth/google/callback`
export const oAuth2Client = new auth.OAuth2(
    GOOGLE_AUTH_CLIENT_ID,
    GOOGLE_AUTH_CLIENT_SECRET,
    callbackUrl
)
© www.soinside.com 2019 - 2024. All rights reserved.