使用 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的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 10 中搭建 Node.js 环境

Node.js的开源博客系统Ghost搭建教程

Node.js 概述

每日灵魂一问-浅谈node.js中的process

Node.js的安装以及Node.js的模块管理

node初始