我正在使用 react-crud-shared 作为 react-crud-backend 的依赖,后者使用 Firebase Cloud Functions 。
>在 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?
谢谢
答案 0 :(得分:1)
编辑:我找到了一个我更喜欢的解决方案。我在这里对这个github问题发表了评论:https://github.com/firebase/firebase-tools/issues/968#issuecomment-460323113。基本上,我有一个预安装脚本,运行npm pack
,可以在使用firebase deploy之前复制到功能目录下的程序包。
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进行部署。 gh。
答案 1 :(得分:1)
df.groupby
;
一个人仍然可以部署具有如下目录结构的私有模块:
import pandas as pd
df = pd.DataFrame({'A': [1,1,1,2,2,2,3,3,3,4,4,4,5,5,5],
'B': [1,2,3,1,2,3,1,2,3,1,2,3,1,2,3]})
mean_df = df.groupby('A')['B'].mean()
# perform the sum, reversing the order to do a forward sum
rolling_sum = mean_df.iloc[::-1].rolling(3, min_periods=0).sum().iloc[::-1]
和{ path: '', component: ChatPage, children: [
{ path: 'active', component: ActivePage },
{ path: 'messages', component: MessagesPage },
{ path: 'teams', component: TeamsPage }
] },
类似:
DATEDIFF
另一种方法是清空忽略项:
MAX
只是认为第一个比较好,因为这会推送整个本地node_modules
目录。
除了这些解决方法...
一个人可以通过functions/
index.js
package.json
react-crud-shared/
package.json
从Cloud Source Repositories安装内部发布的模块。
答案 2 :(得分:1)
如果目标是仅在网络和功能之间共享模块,则可以简单地将共享包放在functions
下,称为file:react-crud-shared
,然后使用{{1 }}。
web
在file:../functions/react-crud-shared
functions/
package.json
...
react-crud-shared/
package.json
...
web/
package.json
...
在functions/package.json
{
"dependencies": {
...
"react-crud-shared": "file:react-crud-shared"
}
}
因为我使用共享的web/package.json
作为更清洁的打字稿,所以对于我的情况来说,它工作得很好。
答案 3 :(得分:0)
我发现您的私有软件包的位置必须在云功能文件夹内(默认为功能)
因此,如果将私有软件包移动到云函数文件夹中,并在package.json中正确设置该软件包的路径,则它应该可以工作。