Closed maqi1520 closed 4 years ago
你是改了他的 new koa 部分方便导出,导致在服务起来时数据库还没连上?
你是改了他的 new koa 部分方便导出,导致在服务起来时数据库还没连上?
没改 我现在把连接数据库部分移动到 index.js 部分
try {
const layer_npm_koaLayer = require('@midwayjs/koa-layer');
layers.push(layer_npm_koaLayer);
} catch(e) { }
let runtime;
let inited = false;
const initializeMethod = async (initializeContext = {}) => {
runtime = await start({
layers: layers,
isAppMode: true
});
await typeorm_1.createConnection({
type: 'mysql',
host: 'xxx',
port: 3306,
username: 'root',
password: 'xxx',
database: 'fass_test',
synchronize: true,
entities: [user_1.User, video_1.Video],
})
};
exports.initializer = asyncWrapper(async (...args) => {
if (!inited) {
inited = true;
await initializeMethod();
}
});
这样是可以的,但是这样我就得手动上传zip代码
稍等,为方便这种情况,我加个异步方法,等 CI。
发完了,文档已经更新 ,增加了异步的方法。
如果在初始化有异步的情况 ,比如连接数据库等,我们提供了异步的支持。
// app.js
const Koa = require('koa');
const Router = require('koa-router');
const app = new Koa();
// *****
// 注释原本的监听
// app.listen(3000);
// 导出默认的 app
module.exports = async () => {
// do some async method, like db connect
return app;
};
你好 使用 @midwayjs/faas-cli 进行部署 koa 迁移方案 使用代码 https://github.com/javieraviles/node-typescript-koa-rest
createConnection({ type: 'mysql', host: 'xxxx', port: 3306, username: 'root', password: 'xxxx', database: 'fass_test', synchronize: true, entities: [User, Video], }) .then(() => { console.log('TypeORM connection success'); }) .catch((err: string) => console.log('TypeORM connection error:', err));
const app = new Koa(); ... ...
module.exports = app;
但是本地调试开发是可以的, 部署成功后有段时间可以访问数据库,有的时候却报数据库服务连接错误,是什么原因呢? 使用sequelize 是可以的