我正在使用react-crud-shared作为使用Firebase Cloud Functions的react-crud-backend的依赖项。

在react-crud-backend我有以下内容:

{
  "name": "react-crud-backend",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    ...
  },
  "dependencies": {
    ...
    "react-crud-shared": "file:../shared",
    ...
  },
  "engines": {
    "node": "8"
  },
  "private": true,
  "devDependencies": {
    ...
  }
}


在react-crud-shared,我有以下几点:

{
  "name": "react-crud-shared",
  "version": "0.0.1",
  "description": "",
  "main": "src/index.js",
  "private": true,
  "dependencies": {
    "lodash": "^4.17.11"
  }
}


它在开发中运行良好:“ firebase仅提供服务功能”,但在部署时会引发错误:

Did you list all required modules in the package.json dependencies?
Detailed stack trace: Error: Cannot find module 'react-crud-shared'


有没有一种方法可以使它工作而不必将私有存储库发布到NPM?

谢谢

最佳答案

编辑:我找到了一个我更喜欢的解决方案。我在这里对这个github问题发表了评论:https://github.com/firebase/firebase-tools/issues/968#issuecomment-460323113。基本上,在使用Firebase部署之前,我有一个运行npm pack的预安装脚本,可以在功能目录下的程序包中进行复制。
FWIW我有完全相同的问题。不确定我要如何解决它,但是文档中的以下信息很有帮助(https://firebase.google.com/docs/functions/handle-dependencies):

要为您的函数指定依赖项,请将其添加到package.json文件中。如果您通过gcloud命令行工具进行部署,则还可以预安装依赖项,并将其与功能一起部署。默认情况下,将node_modules文件夹添加到您的.gcloudignore文件中,并且不会作为部署的一部分上载。要部署预安装的依赖项,请在部署功能之前从.gcloudignore文件中删除node_modules /。
注意:部署预安装的依赖项仅适用于gcloud。 Firebase CLI会忽略本地的node_modules文件夹。

因此,看来您可以先在本地运行“ npm install”,然后使用gcloud进行部署,因为它将复制您的node_modules目录,该目录中将有您的对等依赖项。
不过,确实有点恶臭,我必须从Firebase CLI切换到gcloud进行部署。啊。

关于firebase - Firebase Functions本地“文件:”依赖项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54458795/

10-12 16:29
查看更多