使用node.js标准环境在AppEngine上找不到模块@ google-cloud / firestore

时间:2018-07-10 14:00:07

标签: node.js firebase google-app-engine google-cloud-platform google-cloud-firestore

我已经使用 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?

2 个答案:

答案 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 并重新安装所有软件包对我有用