我遵循了这个教程:https://fireship.io/lessons/angular-universal-firebase/
一切似乎都很正常。我可以通过我的firebase主机url查看Angular应用程序。但是:只要我直接调用一个路由,例如http://xxx.firebase.app/home,我就会得到这个错误(从firebase函数日志中复制)
TypeError: handler is not a function
at cloudFunction (/srv/node_modules/firebase-functions/lib/providers/https.js:57:9)
at /worker/worker.js:783:7
at /worker/worker.js:766:11
at ZoneDelegate.invokeTask (/srv/dist/server.js:5145:31)
at Zone.runTask (/srv/dist/server.js:4917:47)
at ZoneTask.invokeTask (/srv/dist/server.js:5220:34)
at ZoneTask.invoke (/srv/dist/server.js:5209:48)
at data.args.(anonymous function) (/srv/dist/server.js:6143:25)
at _combinedTickCallback (internal/process/next_tick.js:132:7)
at process._tickDomainCallback (internal/process/next_tick.js:219:9)
如果我只调用firebase url而不调用/home
,它会将我正确地重定向到/home
路由
这是我的路由的样子:
const routes: Routes = [
{
path: '',
redirectTo: 'home',
pathMatch: 'full'
},
{
path: 'home',
component: HomeComponent
},
{
path: 'privacy',
component: PrivacyComponent
}
,
{
path: 'imprint',
component: ImprintComponent
}
];
谁能给我解释一下,问题出在哪里?
发布于 2019-05-16 13:07:01
在常量应用程序之前,请确保已将导出添加到server.ts文件中。这就是我的问题所在。
// Express server
export const app = express();
更新
错误解释如下:-在文件functions/src/index.ts
中,通过以下代码需要变量app
:
const universal = require(`${process.cwd()}/dist/server`).app;
exports.ssr = functions.https.onRequest(universal);
但是,根据${process.cwd()}/dist/server
JS文件(它是server.ts
的转换版本),变量app
不是公共的,因此可以在functions/src/index.ts
中获得对它的访问。
通过声明变量app
的方式可以看出这一点:
// Express server
const app = express();
要解决此问题,只需导出变量app
,如下所示:
// Express server
export const app = express();
https://stackoverflow.com/questions/56111378
复制相似问题