Firebase功能“本地”;档案:";依赖关系
我使用react crud shared作为react crud后端的依赖项,该后端使用Firebase云函数 在react crud后端我有以下内容:Firebase功能“本地”;档案:";依赖关系,firebase,npm,google-cloud-functions,Firebase,Npm,Google Cloud Functions,我使用react crud shared作为react crud后端的依赖项,该后端使用Firebase云函数 在react crud后端我有以下内容: { "name": "react-crud-backend", "description": "Cloud Functions for Firebase", "scripts": { ... }, "dependencies": { ... "react-crud-shared": "file:../
{
"name": "react-crud-backend",
"description": "Cloud Functions for Firebase",
"scripts": {
...
},
"dependencies": {
...
"react-crud-shared": "file:../shared",
...
},
"engines": {
"node": "8"
},
"private": true,
"devDependencies": {
...
}
}
{
"name": "react-crud-shared",
"version": "0.0.1",
"description": "",
"main": "src/index.js",
"private": true,
"dependencies": {
"lodash": "^4.17.11"
}
}
在react crud shared中,我有以下信息:
{
"name": "react-crud-backend",
"description": "Cloud Functions for Firebase",
"scripts": {
...
},
"dependencies": {
...
"react-crud-shared": "file:../shared",
...
},
"engines": {
"node": "8"
},
"private": true,
"devDependencies": {
...
}
}
{
"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问题:。基本上,我有一个预安装脚本,运行
npm pack
,在使用firebase deploy之前在functions目录下的包上进行复制
我也有同样的问题。不太确定我将如何解决这个问题,但文档中的这些信息很有帮助():
要为函数指定依赖项,请将其添加到package.json文件中。如果您是通过gcloud命令行工具进行部署,还可以预安装依赖项,并将其与功能一起部署。默认情况下,node_modules文件夹将添加到.gcloudignore文件中,并且不会作为部署的一部分上载。要部署预安装的依赖项,请在部署函数之前从.gcloudignore文件中删除节点_modules/
注意:部署预安装的依赖项仅适用于gcloud;Firebase CLI忽略本地节点\u模块文件夹
因此,您可以首先在本地运行“npm install”,然后使用gcloud进行部署,因为它会复制您的node_modules目录,其中包含您的对等依赖项
不过,我不得不从firebase CLI切换到gcloud进行部署,这确实有点糟糕。Ugh.
节点单元模块
在部署时被忽略(普通)
仍然可以使用如下目录结构部署私有模块:
functions/
index.js
package.json
react-crud-shared/
package.json
{
"dependencies": {
...
"react-crud-shared": "file:./react-crud-shared"
}
}
还有一个类似的package.json
:
functions/
index.js
package.json
react-crud-shared/
package.json
{
"dependencies": {
...
"react-crud-shared": "file:./react-crud-shared"
}
}
另一种方法是将忽略项空白:
{
"functions": {
"ignore": []
}
}
只要认为第一个更好,因为这将推动整个本地node\u模块
目录
除了这些变通方法之外
您可以通过git+https://安装内部发布的模块。我发现您的私有软件包必须位于您的cloud functions文件夹中(默认为functions)
因此,如果您将您的私有包移动到云函数文件夹中,并在package.json中正确设置该包的路径,它应该会起作用。如果目标是仅在web和函数之间共享模块,您可以简单地将共享包作为
文件:react crud shared
放在函数下,然后使用文件:../functions/react crud shared
从web
引用包
functions/
package.json
...
react-crud-shared/
package.json
...
web/
package.json
...
在functions/package.json中
{
"dependencies": {
...
"react-crud-shared": "file:react-crud-shared"
}
}
{
"dependencies": {
...
"react-crud-shared": "file:../functions/react-crud-shared"
}
}
在web/package.json中
{
"dependencies": {
...
"react-crud-shared": "file:react-crud-shared"
}
}
{
"dependencies": {
...
"react-crud-shared": "file:../functions/react-crud-shared"
}
}
它在我的案例中运行得非常好,因为我使用sharedprotobufjs
来创建更干净的typescript。谢谢,我认为云源代码存储库是一个很好的解决方案。实际上,我最终复制了代码=/我将此代码用于react前端和firebase函数后端。谢谢