我已经使用 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?
答案 0 :(得分:2)
似乎有issue安装了@grpc
。如果您的@grpc
被先前的安装尝试损坏,那么如果您继续尝试安装,它很可能会失败。进行npm install @google-cloud/firestore
还将尝试安装grpc,因此,如果grpc损坏,整个工作将无法成功完成。
尝试删除整个nodes_modules
文件夹并从头开始安装软件包。
关于为什么grpc首先被损坏,我不太确定。我的Windows Shell命令(cmd.exe)进行的任何全新安装都反复给我同样的问题。
但是,我能够使用Ubuntu的Linux终端在Ubuntu虚拟机上成功安装所有内容。后来我意识到,即使在使用Windows的Linux子系统而不是Shell Command的Windows操作系统上,同样的事情也是可能的(here是一个视频,显示了如何为Windows设置Ubuntu终端)。因此,Shell命令似乎是问题所在。由于某些原因(我尚未调查),它无法与某些@google-cloud/*
软件包一起使用。
话虽这么说,也有可能使用Cmder之类的东西或Shell命令以外的其他东西在Windows上正确安装那些软件包(我无法确认,我没有尝试过)。
答案 1 :(得分:0)
删除 node_module 并运行 npm install
。它可能运行没有错误。我曾经在使用带有 express 的 firebase-admin 时出错。删除 node_module 并重新安装所有软件包对我有用