Eri*_*c S 5 node.js firebase reactjs google-cloud-functions
我在 React 应用程序中使用 Firebase 函数。我有一些不想复制的重要代码,所以我想在部署的函数和我的 React 客户端之间共享它。我已经在我的 React 客户端本地运行了这个(虽然我没有尝试部署) - 但我无法部署我的功能。
我尝试的第一件事是 npm 链接。这在本地工作,但不会部署函数(这是有道理的,因为这不会在您的 package.json 中留下任何依赖项)。然后我尝试了 npm install ../shared/ - 这看起来很有希望,因为它确实在 package.json 中留下了一个带有 file: 前缀的依赖项 - 但 Firebase 仍然不会部署这个(下面的错误)。
我的项目目录结构如下所示:
/ProjectDir
firebase.json
package.json (for the react app)
/src
* (react source files)
/functions
package.json (for firebase functions)
index.js
/shared
package.json (for the shared module)
index.js
Run Code Online (Sandbox Code Playgroud)
我的共享模块 package.json(省略了无关的细节):
{
"name": "myshared",
"scripts": {
},
"dependencies": {
},
"devDependencies": {
},
"engines": {
"node": "8"
},
"private": true,
"version": "0.0.1"
}
Run Code Online (Sandbox Code Playgroud)
我的 firebase 函数 package.json(省略了无关的细节):
{
"name": "functions",
"scripts": {
},
"dependencies": {
"myshared": "file:../shared",
},
"devDependencies": {
},
"engines": {
"node": "8"
},
"private": true
}
Run Code Online (Sandbox Code Playgroud)
当我尝试部署时:
firebase deploy --only functions
Run Code Online (Sandbox Code Playgroud)
它告诉我它无法加载模块:
Function failed on loading user code. Error message: Code in file index.js can't be loaded.
Did you list all required modules in the package.json dependencies?
Run Code Online (Sandbox Code Playgroud)
而且我认为问题不在于我如何导出/导入我的代码 - 但以防万一:导出:
exports.myFunc = () => { some code };
Run Code Online (Sandbox Code Playgroud)
导入(functions/index.js)
const myFunc = require('myshared');
Run Code Online (Sandbox Code Playgroud)
在我的反应代码中:
import { myFunc } from 'myshared';
Run Code Online (Sandbox Code Playgroud)
到目前为止,我所做的搜索没有产生任何有效的结果。有人确实提到在 firebase.json 中输入共享模块路径,但我找不到任何显示该路径的详细信息(包括在 firebase 文档中)。感谢您提供任何提示以实现这一目标。
我找到了解决方案。我不确定它是唯一的还是最好的解决方案,但它似乎适用于这种情况,而且很容易。正如 Doug 上面提到的,Firebase 不想上传函数目录中没有的任何内容。解决方案是简单地使我的共享模块成为函数下的子目录(即 ./functions/shared/index.js)。然后我可以像普通的 js 文件一样导入到我的函数中。但是,我的共享文件夹也有一个 package.json,用作 react 应用程序的依赖项。我使用以下方法安装它:
npm install ./functions/shared
Run Code Online (Sandbox Code Playgroud)
这会在我的 React 应用程序中创建一个依赖项,它似乎可以正确解析。我创建了一个没有错误的生产版本。我还没有部署 React 应用程序,但我认为这不是问题。
| 归档时间: |
|
| 查看次数: |
1310 次 |
| 最近记录: |