You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导入googleapis/google-auth-library时触发isTTY未定义TypeError问题

问题

使用Node.js和Vue开发时,导入googleapis或google-auth-library库后控制台持续报错:TypeError: Cannot read properties of undefined (reading 'isTTY'),不确定是否需要安装额外依赖或改用require解决。

相关代码(已提前导入fs):

// 上传CSV文件到Google Drive(目前暂未实现功能)
async function uploadToDrive(folderId){
 console.log("messing up here?");
  const{GoogleAuth} = await import('google-auth-library');
 const{google} = await import("googleapis")

  // 获取凭证并构建服务
  const auth = new GoogleAuth({scopes: "https://www.googleapis.com/auth/drive.file"});
  const service = google.drive({version: "v3", auth});

  // 设置folderId并上传csv
  folderId = "1HyC6zKH98n0OzDhmhKWJkupdxY-Knd1k";

  // 从downloadData函数复制的代码
  if (selectedEntry === undefined) return;
  if (downloadLink === undefined) return; // 确保链接存在
  downloadLink.href = widgets.makeDownloadLink({ header: selectedEntry.header, values: filterRecords(true) });

  const fileMetadata = {
    Name: selectedEntry.header,
    parents: [folderId]
  };

  const media = {
    mimeType: "text/csv",
    body: fs.createReadStream(`files/${downloadLink.href}`),
  };

  try {
    const file = await service.files.create({
      requestBody: fileMetadata,
      media: media,
      fields: "id",
    });
    console.log("File Id:", file.data.id);
    return file.data.id;
  } catch (err) {
    // TODO(开发者) - 处理错误
    throw err;
  }
}

控制台错误日志:

chunk-OCKVXT67.js?v=fbea541c:2930 <Suspense> is an experimental feature and its API will likely change.
InspectorContainer.vue:35 messing up here?
chunk-APNZTO2G.js?v=fbea541c:16065 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'isTTY')
    at _Colours.isEnabled (chunk-APNZTO2G.js?v=fbea541c:16065:23)
    at _Colours.refresh (chunk-APNZTO2G.js?v=fbea541c:16068:37)
    at node_modules/google-logging-utils/build/src/colours.js (chunk-APNZTO2G.js?v=fbea541c:16109:13)
    at __require (chunk-4RDJM6KU.js?v=fbea541c:18:50)
    at node_modules/google-logging-utils/build/src/logging-utils.js (chunk-APNZTO2G.js?v=fbea541c:16157:21)
    at __require (chunk-4RDJM6KU.js?v=fbea541c:18:50)
    at node_modules/google-logging-utils/build/src/index.js (chunk-APNZTO2G.js?v=fbea541c:16405:18)
    at __require (chunk-4RDJM6KU.js?v=fbea541c:18:50)
    at node_modules/gcp-metadata/build/src/index.js (chunk-APNZTO2G.js?v=fbea541c:16446:18)
    at __require (chunk-4RDJM6KU.js?v=fbea541c:18:50)
解决方案

这个错误本质是google-logging-utils库在浏览器环境下尝试访问Node.js专属的process.stdout.isTTY属性,但浏览器中不存在process对象导致的。你当前是在Vue前端代码中直接调用为Node.js后端设计的Google API库,这是核心矛盾。

具体解决方法:

  • 方案一:将Google Drive操作移至后端(推荐)

    1. 用Express等框架搭建Node.js后端服务,把uploadToDrive逻辑放到后端代码里。
    2. 前端Vue通过HTTP请求调用后端接口,由后端完成文件上传到Google Drive的操作。
    3. 后端环境存在process对象,不会触发该错误,同时还能避免在前端暴露Google认证凭证的安全风险。
  • 方案二:改用浏览器兼容的Google API客户端
    使用Google官方提供的浏览器端API库,按照浏览器端的授权、文件上传逻辑实现功能,避开依赖Node.js环境的库。

  • 临时调试修复(不推荐生产环境)
    如果只是临时调试,可以在导入Google库前手动模拟process对象:

    // 放在导入google-auth-library/googleapis之前
    window.process = {
      stdout: { isTTY: false },
      env: {}
    };
    

    但这种方法可能引发其他未知问题,且存在安全隐患,不建议用于正式项目。

内容的提问来源于stack exchange,提问作者Moosterbox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 15:34:52