UNPKG

@aiot-toolkit/server

Version:

aiot server

3 lines (2 loc) 3.64 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.launch=launch,exports.stop=stop;var _http=_interopRequireDefault(require("http")),_koa=_interopRequireDefault(require("koa")),_opn=_interopRequireDefault(require("opn")),_portfinder=_interopRequireDefault(require("portfinder")),_sharedUtils=require("@aiot-toolkit/shared-utils"),_compilationConfig=require("@aiot-toolkit/shared-utils/compilation-config"),_recordClient=require("@aiot-toolkit/shared-utils/lib/record-client"),_config=_interopRequireDefault(require("@aiot-toolkit/shared-utils/config"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let server=null;async function launch(e,r){return new Promise((async o=>{try{const s=new _koa.default;let t=_config.default.server.port;t=await _portfinder.default.getPortPromise({port:t}),Object.assign(e.defaults,{serverPort:t}),s.context.conf=e;const{clearRecords:n,openBrowser:i}=e.options;if(n){const{clientRecordPath:e}=_config.default;(0,_recordClient.clearProjectRecord)(e)}for(let e=0,o=r.moduleList.length;e<o;e++){const o=r.moduleList[e];"function"==typeof o.hash.applyRouter&&s.use(o.hash.applyRouter(s).routes())}server=_http.default.Server(s.callback()),s.server=server;for(let e=0,o=r.moduleList.length;e<o;e++){const o=r.moduleList[e];"function"==typeof o.hash.beforeStart&&await o.hash.beforeStart(server,s)}server.listen(t,(()=>{const e=`http://localhost:${t}`,r=(0,_sharedUtils.getIPv4IPAddress)();if(!r)return _sharedUtils.colorconsole.warn("### App Server ### The machine's IP address is empty and cannot be debugged through WIFI"),void o({launchServerError:null,server:server,address:e,previewAddress:e+"/previewAddress"});const s=`http://${r}:${t}`;_compilationConfig.compileOptionsObject.enableMirtos||(_sharedUtils.colorconsole.info(`### App Server ### Server address: ${e}, ${s}`),_sharedUtils.colorconsole.info("### App Server ### Please make sure that the phone and App Server are in the same network segment"),(0,_sharedUtils.outputQRCodeOnTerminal)(s)),i&&(0,_opn.default)(s),o({launchServerError:null,server:server,address:s,previewAddress:e+"/preview"})})),s.on("error",((e,r)=>{_sharedUtils.colorconsole.error(`### App Server ### Server Error: ${e.message}`);const s=`Error! HTTP error code: ${e.status}, error message: ${e.message}`;r&&(r.body=s),o({launchServerError:e,server:server})})),server.on("error",(e=>{_sharedUtils.colorconsole.error(`### App Server ### Server Error: ${e.message}`),"EADDRINUSE"===e.code&&_sharedUtils.colorconsole.error(`### App Server ### Server Error: Port ${t} is occupied, please check`),o({launchServerError:e,server:server})})),process.on("SIGINT",(()=>{_sharedUtils.colorconsole.info("### App Server ### SIGINT signal"),_sharedUtils.colorconsole.info(`### App Server ### Exit the server process pid: ${process.pid}`),process.exit()})),process.on("uncaughtException",(e=>{_sharedUtils.colorconsole.error(`### App Server ### Undefined exception, error message: ${e.message}`),console.error(e)})),process.on("unhandledRejection",((e,r)=>{_sharedUtils.colorconsole.error(`### App Server ### Unprocessed rejection, error message: ${e}`),r.catch((e=>{console.error(e)}))}))}catch(e){throw _sharedUtils.colorconsole.error(`### App Server ### Server failed to start: ${e.message}`),o({launchServerError:e,server:null}),e}}))}function stop(){return new Promise((e=>{if(server)try{server.close((r=>{e({stopServerError:r})}))}catch(r){throw _sharedUtils.colorconsole.error(`### App Server ### Server shutdown failed: ${r.message}`),e({stopServerError:r}),r}else e({stopServerError:"no server"})}))} //# sourceMappingURL=server.js.map