首页 > 解决方案 > 如何为 Google Cloud Storage 设置 Nodejs 环境

问题描述

我是谷歌云平台的新手,我正在关注本教程

https://cloud.google.com/docs/authentication/getting-started#auth-cloud-implicit-nodejs

设置环境变量后我使用了谷歌云,这条线导致了问题

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

当我注释掉这一行时,它会起作用,否则会引发错误

TypeError: Expected `input` to be a `Function` or `Object`, got `undefined`
push../node_modules/gtoken/node_modules/pify/index.js.module.exports
D:/SE/Web/React/storybook/node_modules/gtoken/node_modules/pify/index.js:56
53 | var objType = typeof input;
54 | 
55 | if (!(input !== null && (objType === 'object' || objType === 
'function'))) {
> 56 |   throw new TypeError("Expected `input` to be a `Function` or 
`Object`, got `".concat(input === null ? 'null' : objType, "`"));
 | ^  57 | }
 58 | 
 59 | var filter = function filter(key) {
 View compiled
 ./node_modules/gtoken/build/src/index.js
 D:/SE/Web/React/storybook/node_modules/gtoken/build/src/index.js:65
 62 | 
 63 | var pify = require("pify");
 64 | 
 > 65 | var readFile = pify(fs.readFile);
 66 | var GOOGLE_TOKEN_URL = 'https://www.googleapis.com/oauth2/v4/token';
 67 | var GOOGLE_REVOKE_TOKEN_URL = 
'https://accounts.google.com/o/oauth2/revoke?token=';
 68 | 

标签: node.jsgoogle-cloud-storage

解决方案


我遵循了与您上面提到的相同的教程。它对我有用。请确保您没有跳过该过程中的任何步骤。

  1. 创建服务帐户并将 JSON 文件下载到您的计算机非常重要。然后在您的 Cloud Shell 中上传 JSON 文件。
  2. GOOGLE_APPLICATION_CREDENTIALSCloud Shell 中的变量设置为 JSON 文件的路径。按照设置环境变量的说明进行操作。
  3. 创建一个Virtual Environment. 执行virtualenv [ENVIRONMENT_NAME]
  4. 通过执行激活环境source [ENVIRONMENT_NAME]/bin/activate
  5. 安装@google-cloud/storage库。执行npm install --save @google-cloud/storage
  6. 创建一个Nodejs文件。添加代码表单“身份验证入门”>“验证身份验证文档”。
  7. 通过执行来运行文件node [FILE_NAME].js

如果您收到错误:

错误:[GSERVICEACCOUNT] 没有 storage.buckets.list 对项目 [PROJECT_NUMBER] 的访问权限。

  1. 然后复制整个[GSERVICEACCOUNT].
  2. 去找你Google Cloud Console
  3. IAM & admin从导航菜单转到页面。
  4. 点击Add+
  5. New members添加[GSERVICEACCOUNT].
  6. 形成下拉菜单Select a role,选择Storage Admin角色。
  7. 点击Save

现在,如果您再次执行node [FILE_NAME].js. 您应该会看到 Cloud Shell 上列出的所有存储分区。


推荐阅读