node.js - 如何为 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 |
解决方案
我遵循了与您上面提到的相同的教程。它对我有用。请确保您没有跳过该过程中的任何步骤。
- 创建服务帐户并将 JSON 文件下载到您的计算机非常重要。然后在您的 Cloud Shell 中上传 JSON 文件。
- 将
GOOGLE_APPLICATION_CREDENTIALS
Cloud Shell 中的变量设置为 JSON 文件的路径。按照设置环境变量的说明进行操作。 - 创建一个
Virtual Environment
. 执行virtualenv [ENVIRONMENT_NAME]
。 - 通过执行激活环境
source [ENVIRONMENT_NAME]/bin/activate
。 - 安装
@google-cloud/storage
库。执行npm install --save @google-cloud/storage
。 - 创建一个
Nodejs
文件。添加代码表单“身份验证入门”>“验证身份验证文档”。 - 通过执行来运行文件
node [FILE_NAME].js
。
如果您收到错误:
错误:[GSERVICEACCOUNT] 没有 storage.buckets.list 对项目 [PROJECT_NUMBER] 的访问权限。
- 然后复制整个
[GSERVICEACCOUNT]
. - 去找你
Google Cloud Console
。 IAM & admin
从导航菜单转到页面。- 点击
Add+
。 - 在
New members
添加[GSERVICEACCOUNT]
. - 形成下拉菜单
Select a role
,选择Storage Admin
角色。 - 点击
Save
。
现在,如果您再次执行node [FILE_NAME].js
. 您应该会看到 Cloud Shell 上列出的所有存储分区。
推荐阅读
- adobe-illustrator - 我正在寻找一个自动编号系统,用于在 Photoshop 中按编号工具包自定义绘画
- sorbet - Sorbet:检查包含目标模块的类
- google-analytics - 引入新的 utm 参数值时,GA4 中的 traffic_source.medium 是否会更新?
- python - 使用 from Scratch 构建 Sklearn 的 (vectorizer.idf_) 函数
- docker - 寻找一种方法来列出来自 DockerHub 的 arm 架构的所有社区镜像(非官方)
- ios - 在 UIVisualEffectView 的底部添加淡入淡出
- spring - ClassLoader 在 kubernetes 找不到文件
- python-3.x - 为什么 memo[targetsum] = shortestcombination 在我的代码中产生错误
- zsh - linux终端提示符中的第三个“元素”是什么,它会影响程序的运行方式吗?
- electron - Electron builder extraFiles 只复制空目录没有文件