Firebase 功能:上传错误:HTTP 错误:400,未知错误
2021-02-18
2944
我尝试将 Angular Universal SSR 应用的服务器端部署到 Firebase Functions,但遇到了错误
上传错误:HTTP 错误:400,未知错误
。
据我所知,当部署的文件很大时(在我的情况下是 438mb),此错误经常发生。文件这么大的原因是因为我正在部署网站的本地化版本,因此
dist/browser
和
dist/server
都具有
en
、
de
和
fr
目录,内容几乎相同。我该如何解决这个问题?
控制台输出
=== Deploying to 'PROJECT_NAME'...
i deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run lint
+ functions: Finished running predeploy script.
i functions: ensuring required API cloudfunctions.googleapis.com is enabled...
i functions: ensuring required API cloudbuild.googleapis.com is enabled...
+ functions: required API cloudfunctions.googleapis.com is enabled
i functions: preparing dist directory for uploading...
i functions: packaged dist (438.04 MB) for uploading
! functions: Upload Error: HTTP Error: 400, Unknown Error
Error: HTTP Error: 400, Unknown Error
index.js
const functions = require('firebase-functions');
// Increase readability in Cloud Logging
require("firebase-functions/lib/logger/compat");
const expressApp = require('./server/proxy').app();
exports.ssr = functions
.region('us-central1')
.runWith({})
.https
.onRequest(expressApp);
proxy.ts(编译为 js 并放入 dist/server 文件夹)
import * as express from 'express';
import * as cookieParser from 'cookie-parser';
import { join } from 'path';
export function app() {
const server = express();
server.use(cookieParser());
const languages = ['en', 'de', 'fr'];
languages.forEach((locale) => {
const appServerModule = require(join(__dirname, locale, 'main.js'));
server.use(`/${locale}`, appServerModule.app(locale));
});
server.get('/(:locale(en|fr|de)/)?*', (req, res, next) => {
const { locale } = req.params;
let userLocale = (req.headers['accept-language'] || '').substring(0, 2);
if(!languages.includes(userLocale)) {
userLocale = 'en';
}
if (locale !== userLocale) {
res.redirect(userLocale + req.url);
}
});
return server;
}
function run() {
app().listen(4200, () => {
console.log(`Node Express server listening on http://localhost:4200`);
});
}
run();
3个回答
我在 NextJS 和 firebase 函数中遇到了同样的问题,
这是我的解决方案:
- 删除 node_modules 并运行 npm i
- 删除 缓存文件 、外部或 公共构建
- 从 firebase 面板检查 函数控制台注册表 (您可以在此处检查您的服务状态/日志)
我希望这可以帮助到某人。
Chrisdev3001
2021-07-11
我减少了部署的大小,问题立即得到解决。我想说你只需要优化现有文件,或者考虑将一些文件存储在 Firebase 函数代码库以外的其他位置(也许是 Firebase 存储)
Mike K.
2021-03-27
我遇到了这个问题,刚刚解决了。就我而言,我已多次部署到 Firebase,每次部署时上传目录都会变得越来越大。我最终将托管设置更改为仅保留最后 3 次部署,这导致在删除之前的部署后,我的包大小从大约 170MB 降至 15MB。出于某种原因,每次部署时,尝试上传新版本时都会吸收之前的每个部署,这对我来说没有意义。
Anders Bergquist
2021-06-24