【发布时间】:2021-01-06 17:09:10
【问题描述】:
我使用以下步骤生成了一个演示快递服务器:
npm install -g express-generatorexpress myExpressApp --view pug
不用说,该应用在我的本地机器上运行良好 (npm start)
然后我将代码推送到 Cloud Source Repositories
然后通过他们的网络应用部署到 Google Cloud Functions
我生成的演示应用的源代码:
/myExpressApp/app.js
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
/myExpressApp/routes/index.js
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
module.exports = router;
最终更新
我按照 Abrar Hossain 的建议添加了以下内容 app.js
//...
module.exports = app;
exports.app = functions.http.onRequest(app);
module.exports = { app };
package.json
"scripts": {
"start": "functions-framework --target=company"
},
"dependencies": {
"@google-cloud/functions-framework": "^1.7.1",
问题依旧
【问题讨论】:
-
如果 app.js 是您的函数的入口点,那么它应该导出一个 Firebase 函数:
exports.app = functions.http.onRequest(app);其中functions是对需要导入您的 app.js 的firebase-functions的引用脚本。 -
不,你为什么会这么认为@YeriPelona?
-
你好@ericn 你找到解决这个问题的方法了吗?我遇到了同样的症状,我一无所知
-
不@ImanZarrabian,我的解决方案是使用另一种技术(Springboot + Heroku)
标签: node.js express google-cloud-functions