使用 node.js 标准环境在 AppEngine 上找不到模块 @google-cloud/firestore
Posted
技术标签:
【中文标题】使用 node.js 标准环境在 AppEngine 上找不到模块 @google-cloud/firestore【英文标题】:Cannot find module @google-cloud/firestore on AppEngine using node.js standard environment 【发布时间】:2018-12-18 10:02:42 【问题描述】:我使用 node.js 标准环境在 AppEngine 上部署了一个 cron,以便定期更新我的 Firestore 数据库。
在this doc 之后,链接到this list 的可用npm 模块,我应该可以使用@google-cloud/firestore,但之后:
npm i --save @google-cloud/firestore
我收到以下错误:
Error: Cannot find module '@google-cloud/firestore'
在线:
var firestore = require('@google-cloud/firestore');
我的 package.json 与 Hello World 示例相同:
"name": "appengine-hello-world",
"description": "Simple Hello World Node.js sample for Google App Engine Standard Environment.",
"version": "0.0.1",
"private": true,
"license": "Apache-2.0",
"author": "Google Inc.",
"repository":
"type": "git",
"url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git"
,
"engines":
"node": "8.x.x"
,
"scripts":
"deploy": "gcloud app deploy",
"start": "node app.js",
"lint": "repo-tools lint",
"pretest": "npm run lint",
"system-test": "repo-tools test app",
"test": "npm run system-test",
"e2e-test": "repo-tools test deploy"
,
"dependencies":
"@google-cloud/firestore": "^0.14.1",
"express": "^4.16.3"
,
"devDependencies":
"@google-cloud/nodejs-repo-tools": "^2.3.0",
"semistandard": "^12.0.1"
,
"cloud-repo-tools":
"test":
"app":
"msg": "Hello, world!"
,
"requiresKeyFile": true,
"requiresProjectId": true
最后我部署:
gcloud app deploy --version=v8 --promote
我应该如何在我的 cron 中使用 firestore?
【问题讨论】:
请编辑问题以说明您是如何安装模块的,以及 package.json 的内容。 @DougStevenson 完成 我刚刚遇到了同样的错误信息。解决方法是:npm install --save @google-cloud/firestore 抱歉,这是你的错字吗command: 'i' 而不是 'install' 还是我不知道的缩写? 【参考方案1】:似乎有一个issue 正在安装@grpc
。如果您的@grpc
被之前的安装尝试损坏,那么如果您继续尝试安装,它可能会一直失败。执行npm install @google-cloud/firestore
也会尝试安装 grpc,所以如果 grpc 损坏,整个事情将无法成功完成。
尝试删除整个 nodes_modules
文件夹并从头开始安装您的软件包。
至于为什么 grpc 首先被破坏,我不太确定。从我的 Windows Shell 命令 (cmd.exe) 进行的任何全新安装都会一遍又一遍地给我同样的问题。
但是,我能够使用 Ubuntu 的 linux 终端在 Ubuntu 虚拟机上成功安装所有内容。后来我意识到,即使在使用 Windows 的 Linux 子系统而不是 Shell 命令的 Windows 操作系统上,同样的事情也是可能的(here 是一个视频,展示了如何为 Windows 设置 Ubuntu 终端)。因此,Shell 命令似乎是问题所在。出于某种我还没有研究过的原因,它不适用于某些@google-cloud/*
包。
话虽如此,也有可能使用 Cmder 之类的东西在 Windows 上正确安装这些软件包,或者使用 Shell 命令以外的任何其他东西(我无法确认,我没有尝试过)。
【讨论】:
谢谢你。我最终使用了 powershell 并修复了它。【参考方案2】:删除 node_module 并运行 npm install
。它可能运行没有错误。我曾经在使用带有 express 的 firebase-admin 时遇到错误。删除 node_module 并重新安装所有软件包再次对我有用
【讨论】:
以上是关于使用 node.js 标准环境在 AppEngine 上找不到模块 @google-cloud/firestore的主要内容,如果未能解决你的问题,请参考以下文章