【问题标题】:Deploy a local modification of Node module to Cloud Functions for Firebase将 Node 模块的本地修改部署到 Cloud Functions for Firebase
【发布时间】:2017-04-27 08:01:57
【问题描述】:

我正在为 Firebase 开发一些云功能,其中一个特别不适用于我的功能所依赖的节点模块之一中的问题。

我已经发现问题出在哪里以及如何解决它,问题是,如果我修改 node_modules/ 文件夹中的源,该更新不会发送到服务器。 我从 package.json 中删除了依赖项并做了(在本地修改文件之前):

npm install --save pdf2img

但是函数没有更新,错误总是一样的。 有没有可能做我想做的事?

感谢任何提供帮助的人!

【问题讨论】:

  • 不,不要修改 node_modules 目录下的文件,如果你想更改 node_modules 包中的某些内容,你可以 fork GitHub 中的存储库,这是最常见的。然后修改它并从 git 存储库安装 npm。也不要直接修改 package.json 那样,模块仍然存在,因为它从未被删除,尝试 npm 管理这些操作。
  • 谢谢菲尼克斯先生!所以我会这样分叉并安装。我不是真正的 nodejs 专家,所以会探索更多的 npm 命令!

标签: node.js firebase google-cloud-functions


【解决方案1】:

感谢Mr.Phoenix的提示,解决方法是:

  • fork 存储库(或者在我的情况下,找到一个已经修复的 fork)。

  • 删除以前的版本:

npm uninstal --save pdf2img

  • 从 fork 安装新版本:

npm install --save git+https://git@github.com/matteocontrini/node-pdf2img

无法解决这种特定情况下的问题,因为该库依赖于“gm”和其他在 firebase 函数中不可用的库

【讨论】:

    【解决方案2】:
    1. 假设您在 node_modules 中对名为 protobufjs 的依赖项进行了更改。
    2. 将此包protobufjs 从您的node_modules 复制到functions 文件夹。
    3. 将以下内容添加到您的 dependencies"protobufjs": "file:./protobufjs"(假设您将 protobufjs 文件夹放在函数文件夹的根目录中)。
    4. 运行:firebase deploy

    【讨论】:

    • 这是一个很好的解决方案,没有理由不能创建包的本地副本。无论您是否希望您的修改可以公开访问,这样做都有好处。
    【解决方案3】:

    如果您已从原始存储库分叉到您自己的 GitHub 存储库,则可以将您的版本克隆到“functions”文件夹的根目录中。 那么:

    1. 如果需要将包从 Typescript 编译成 Javascript,请使用 yarn(会有一个 yarn.json 文件)或 npm(会有一个 package.json 文件)构建包。

    2. 按照 Daniel Danielecki 上一个回答的建议执行操作,并将以下内容添加到您的依赖项中:“[YOUR-PACKAGE-NAME]”:“file:./[YOUR-PACKAGE-NAME]”

    3. 尝试使用“firebase deploy”进行部署。您可能会收到类似于“eslint 错误 - 找不到模块 '@[SOME-NAME]/eslint-config'”的 es-lint 错误。这是 eslint 中的一个错误,可以在此处查看 eslint bug。要解决此问题,只需将“.eslintignore”文件添加到“functions”文件夹的根目录中,并添加“[YOUR-PACKAGE-NAME]/*”行以忽略错误的 linting 错误以成功部署。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      • 2018-06-17
      • 2018-03-15
      • 2018-08-18
      相关资源
      最近更新 更多