首页 > 解决方案 > 如何修复 Api 错误:必需参数:带有 GCS 的 GAE 项目

问题描述

尝试在基于 Google App Engine 的 nodejs 应用程序中连接 Google Cloud Storage Bucket 时出现以下错误。

ApiError:必需参数:项目

   at Util.parseHttpRespBody (/workspace/node_modules/@google-cloud/common/build/src/util.js:208:38)

   at Util.handleResp (/workspace/node_modules/@google-cloud/common/build/src/util.js:149:117)

server.js 文件中的连接代码非常简单:

const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
storage.getBuckets().then(y => console.log(y));

部署的应用程序和存储桶都是同一个项目的一部分。

我还为存储桶创建了一个服务帐户,该帐户具有 API Keys Admin 和 Storage Admin 角色,并且已生成 API 密钥。

任何帮助将非常感激!

编辑:

这是更新的代码(我的项目 id 已编辑):

const {Storage} = require('@google-cloud/storage');

const storage = new Storage({
  projectId: 'r@@@@@@t-t@@@h-3####9'
});

storage.getBuckets().then(y => console.log(y));

package.json 依赖:

"dependencies": {
    "@google-cloud/storage": "^5.15.3",
    "body-parser": "^1.19.0",
    "dotenv": "^10.0.0",
    "ejs": "^3.1.6",
    "express": "^4.17.1",
    "multer": "^1.4.3",
    "pg": "^8.7.1",
    "pg-hstore": "^2.3.4",
    "sequelize": "^6.6.5",
    "sequelize-cli": "^6.2.0"
  },
  "devDependencies": {
    "@types/node": "^14.6.2",
    "nodemon": "^2.0.14"
  }

标签: javascriptnode.jsgoogle-app-enginegoogle-cloud-storage

解决方案


创建客户端并指定项目 ID(不是项目名称):

const storage = new Storage({
  projectId: 'your-project-id'
});

如果要指定您提到的服务帐户:

const storage = new Storage({
  projectId: 'your-project-id',
  keyFilename: '/path/to/service-account-key.json'
});

文档:

谷歌云存储 Nodejs 客户端


推荐阅读