错误:部署云功能时解析触发器出错 - Firebase

Posted

技术标签:

【中文标题】错误:部署云功能时解析触发器出错 - Firebase【英文标题】:Error: Error parsing triggers while deploying cloud functions - Firebase 【发布时间】:2018-08-03 00:44:01 【问题描述】:

我正在使用来自react-domrenderToString 函数(在我的服务器端)。代码看起来像(+/-):

import Home from './app/containers/Home';
const app = express();

app.get('**', (req, res) => 
  const html = renderToString(<Home />);
  res.set('Cache-Control', 'public, max-age=600, s-maxage=1200');
  res.send(html);
);

一切都很顺利,直到我尝试将它部署到服务器上。

控制台中的

示例错误

Error: Error parsing triggers: Cannot find module 'store/Home/actions'

什么时候出现?

如果我将路径更改为其他组件,不使用任何其他组件(仅来自节点的模块,如 reactreact-redux),它正常工作强>。

但是如果我尝试使用一些使用其他组件并导入它们的组件,例如:

var _CreateUser = require('components/Pages/CreateUser');(在渲染组件中)

现在它将失败并出现错误:

Error: Error parsing triggers: Cannot find module 'components/Pages/CreateUser'

所以目前我卡住了,因为我必须在服务器端使用我的整个应用程序,而不仅仅是一个不导入任何东西的组件:)

为什么会这样?为什么会失败?糟糕的 webpack 配置失败了吗?

期待任何帮助。谢谢。

注意,正如我上面所说,如果我使用任何导入(不使用其中的任何其他组件)渲染某个组件的字符串 - 服务器端渲染工作正常并且我能够在页面加载之前查看 renderedToString 内容。

【问题讨论】:

1) 您的服务器和本地/开发计算机中的操作系统是什么? 2)您是否在服务器端安装了所有软件包(与您的开发环境中的版本相同)? 如何部署?只是复制粘贴文件夹?还是你用 git? @sultan 1) 本地 win7。服务器?我真的不知道... 2)我已经安装了我在服务器端渲染中使用的所有软件包。 3)我用firebase deploy部署它,我没有使用git 【参考方案1】:

无论您在哪里导入本地模块,都需要在路径中包含该目录,否则它将在 node_modules 中搜索命名包并最终失败。

require('./store/Home/actions');

或者:

import HomeActions from './store/Home/actions';

...取决于您使用的导入样式。作为 import/require 语句的一部分,始终需要准确的目录。

【讨论】:

同样的事情发生了。 Cannot find module './components/Pages/CreateUser' 你能显示 CreateUser 的代码吗?如果没有,请查看导出声明。如果你使用 require (commonJS) 它应该是 module.exports = something 或者如果你使用 import (es2015+) 你需要导出 export default myModuleName 或者相似的东西。它们不可互换。 [medium.com/@brianleroux/…关于该主题的文章) 抱歉耽搁了。所以最后我有exports.default = enhance(CreateUser); 和开头Object.defineProperty(exports, "__esModule", value: true ); 好吧,这似乎是问题所在。您不应该需要 defineProperty 并且您正在将 commonJS 模块与 es6 导入混合。这是一个显示差异的好页面。 require vs. import【参考方案2】:

您使用的是相对路径,cd 进入并从函数目录部署,所以它是正确的。

【讨论】:

我仍然遇到同样的错误 :( 我尝试从每个可能的目录进行部署...【参考方案3】:

您的Home 组件似乎在functions/app/containers/Home 内,您需要访问文件functions/app/store/Home/actions

从您的containers/Home 文件中,您需要向上两个目录到app 文件夹,然后向下两个目录来更正文件。所以

import HomeActions from '../../store/Home/actions'`. 

每个../ 代表上一级目录到父文件夹。我们从

functions/app/containers/Home

functions/app/containers/

functions/app 然后我们可以指定从那里继续的路径

store/Home/actions

【讨论】:

以上是关于错误:部署云功能时解析触发器出错 - Firebase的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 的 Firebase 云函数?

GCP 云功能 - 在构建/部署期间获取存储源时出错

部署代码以解析云时出错

部署到 Firebase 云功能时出错 - ?缺少配置详细信息

解析云代码并触发性能 - 使用

解析云代码查询不触发成功或错误