Skip to content
This repository has been archived by the owner on Jul 2, 2020. It is now read-only.

Commit

Permalink
fix: fix error control in fc
Browse files Browse the repository at this point in the history
  • Loading branch information
czy88840616 committed May 3, 2020
1 parent 3adbba8 commit fd99384
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 5 deletions.
32 changes: 27 additions & 5 deletions packages/serverless-fc-starter/src/runtime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,13 @@ import {
import { Context } from '@midwayjs/serverless-http-parser';
import * as util from 'util';

const isLocalEnv = () => {
return (
process.env.MIDWAY_SERVER_ENV === 'local' ||
process.env.NODE_ENV === 'local'
);
};

export class FCRuntime extends ServerlessLightRuntime {
/**
* for handler wrapper
Expand Down Expand Up @@ -110,21 +117,21 @@ export class FCRuntime extends ServerlessLightRuntime {
if (!['content-length'].includes(key)) {
if ('set-cookie' === key && !isHTTPMode) {
// unsupport multiple cookie when use apiGateway
newHeader[key] = ctx.res.headers[key][0];
if (ctx.res.headers[key].length > 1) {
newHeader[ key ] = ctx.res.headers[ key ][ 0 ];
if (ctx.res.headers[ key ].length > 1) {
ctx.logger.warn(
`[fc-starter]: unsupport multiple cookie when use apiGateway`
);
}
} else {
newHeader[key] = ctx.res.headers[key];
newHeader[ key ] = ctx.res.headers[ key ];
}
}
}

if (res.setHeader) {
for (const key in newHeader) {
res.setHeader(key, newHeader[key]);
res.setHeader(key, newHeader[ key ]);
}
}

Expand All @@ -142,7 +149,22 @@ export class FCRuntime extends ServerlessLightRuntime {
headers: newHeader,
body: ctx.body,
};
});
})
.catch((err) => {
if (isLocalEnv()) {
ctx.logger.error(err);
}
if (res.send) {
res.setStatusCode(500);
res.send(isLocalEnv() ? err.stack : 'Internal Server Error');
}
return {
isBase64Encoded: false,
statusCode: 500,
headers: {},
body: isLocalEnv() ? err.stack : 'Internal Server Error',
};
});
}

async wrapperEventInvoker(handler, event, context) {
Expand Down
4 changes: 4 additions & 0 deletions packages/serverless-fc-trigger/src/http.ts
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,10 @@ class Response {
this._res.end();
}

setStatusCode(statusCode) {
this.statusCode = statusCode;
}

end(data) {
this.send(data);
}
Expand Down

0 comments on commit fd99384

Please sign in to comment.