javascript - 如何修复 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"
}
解决方案
创建客户端并指定项目 ID(不是项目名称):
const storage = new Storage({
projectId: 'your-project-id'
});
如果要指定您提到的服务帐户:
const storage = new Storage({
projectId: 'your-project-id',
keyFilename: '/path/to/service-account-key.json'
});
文档:
推荐阅读
- testing - 有没有办法将TestCafe指向“localhost”而不是机器IP?
- node.js - 我已经开始将 Docker 与 Stack 应用程序一起使用,但出现此错误 .MongooseServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017
- windows - 如何导出从 CNG API 生成的 RSA 密钥?
- php - 如何使用 Laravel 8 删除 firebase 存储上的文件?
- reactjs - 从 RTMP 流媒体链接获取视频数据到浏览器
- flutter - 使用 VSCode 颤振时出现“cmdline-tools 组件丢失”错误
- sql - Spark SQL:在表的列中选择 10 个随机选择的值组
- google-cloud-platform - GCP SQL 实例与自动缩放 GKE 节点的连接
- java - java.lang.ClassNotFoundException:ch.qos.logback.core.util.StatusListenerConfigHelper
- python - 是否可以在 aws lambda 函数中安装 s3fs-fuse?