diff --git a/src/apollo.ts b/src/apollo.ts index 13a6d71..d9c4352 100644 --- a/src/apollo.ts +++ b/src/apollo.ts @@ -66,17 +66,20 @@ export default class Apollo extends EventEmitter { this._envReader = new EnvReader({ env_file_type: this.env_file_type, - logger: this.logger + logger: this.logger, }); if (config.token && config.portal_address) { - this._openApi = new OpenApi({ - token: this.token, - portal_address: this.portal_address, - app_id: this.app_id, - cluster_name: this.cluster_name, - namespace_name: this.namespace_name, - }, this.logger); + this._openApi = new OpenApi( + { + token: this.token, + portal_address: this.portal_address, + app_id: this.app_id, + cluster_name: this.cluster_name, + namespace_name: this.namespace_name, + }, + this.logger, + ); } } @@ -223,7 +226,9 @@ export default class Apollo extends EventEmitter { url, method: CurlMethods.GET, body: JSON.stringify(data), - headers: { 'Content-Type': 'application/json' } as http.OutgoingHttpHeaders, + headers: { + 'Content-Type': 'application/json', + } as http.OutgoingHttpHeaders, }; if (this.secret) { const timestamp = Date.now().toString(); @@ -232,8 +237,8 @@ export default class Apollo extends EventEmitter { options.headers = { ...options.headers, Authorization: sign, - Timestamp: timestamp - } + Timestamp: timestamp, + }; } response = curl(options); } catch (err) { @@ -241,9 +246,7 @@ export default class Apollo extends EventEmitter { } finally { if (error) { error = new ApolloInitConfigError(error); - } - - else if (response) { + } else if (response) { const { body, status, message } = response; if (!response.isJSON()) { @@ -256,7 +259,7 @@ export default class Apollo extends EventEmitter { } if (error) { - this.logger.warn('[egg-apollo-client] %j', error); + this.logger.warn('[egg-apollo-client] %s', error); if (this.set_env_file) { this.readFromEnvFile(); @@ -290,7 +293,7 @@ export default class Apollo extends EventEmitter { releaseKey: release_key, ip, }, - headers: {} + headers: {}, }; if (this.secret) { @@ -300,7 +303,7 @@ export default class Apollo extends EventEmitter { options.headers = { Authorization: sign, Timestamp: timestamp, - } + }; } const response = await request(url, options); @@ -332,7 +335,7 @@ export default class Apollo extends EventEmitter { options.headers = { Authorization: sign, Timestamp: timestamp, - } + }; } const response = await request(url, options); @@ -342,8 +345,7 @@ export default class Apollo extends EventEmitter { this.emit('config.updated', response.data); } return response.data; - } - else { + } else { const error = new RequestError(response.data); this.logger.error('[egg-apollo-client] %j', error); } @@ -376,7 +378,7 @@ export default class Apollo extends EventEmitter { if (retryTimes < 10) { retryTimes++; - await new Promise(resolve => setTimeout(resolve, this.delay)); + await new Promise((resolve) => setTimeout(resolve, this.delay)); // 每次重试都要加长延时时间 this._setDelay(); } else { @@ -417,7 +419,7 @@ export default class Apollo extends EventEmitter { options.headers = { Authorization: sign, Timestamp: timestamp, - } + }; } const response = await request(url, options); @@ -500,8 +502,7 @@ export default class Apollo extends EventEmitter { const rename = `${envPath}.${Date.now()}`; try { fs.renameSync(envPath, rename); - } - catch (e) { + } catch (e) { process.env.NODE_ENV !== 'production' && console.error(e); } } diff --git a/src/error/ApolloConfigError.ts b/src/error/ApolloConfigError.ts index 353a30f..1a7852c 100644 --- a/src/error/ApolloConfigError.ts +++ b/src/error/ApolloConfigError.ts @@ -3,4 +3,7 @@ export class ApolloConfigError extends Error { super(message); this.message = `ApolloConfigError: ${message}`; } + toString() { + return this.message; + } } diff --git a/src/error/ApolloInitConfigError.ts b/src/error/ApolloInitConfigError.ts index 565627e..b99ba34 100644 --- a/src/error/ApolloInitConfigError.ts +++ b/src/error/ApolloInitConfigError.ts @@ -3,4 +3,7 @@ export class ApolloInitConfigError extends Error { super(message); this.message = `ApolloInitConfigError: ${message}`; } + toString() { + return this.message; + } } diff --git a/src/lib/curl/index.ts b/src/lib/curl/index.ts index decd2ac..884a1b7 100644 --- a/src/lib/curl/index.ts +++ b/src/lib/curl/index.ts @@ -5,7 +5,6 @@ import { ICurlOptions, ICurlResponse } from './interface'; export * from './enum/CurlMethods'; export * from './interface'; - export default function request(options: ICurlOptions): ICurlResponse { if (!options.method) { options.method = CurlMethods.GET; @@ -18,17 +17,27 @@ export default function request(options: ICurlOptions): ICurlResponse { } const url = options.url; - const result = spawnSync('node', ['./child.js', url, '-o', JSON.stringify(options)], { - cwd: __dirname - }); - const { stdout } = result; + const result = spawnSync( + 'node', + ['./child.js', url, '-o', JSON.stringify(options)], + { + cwd: __dirname, + } + ); + const { stdout, stderr } = result; + const errorString = stderr.toString(); + if (errorString.length) { + throw errorString; + } const resultString = stdout.toString(); const response = resultString ? JSON.parse(resultString) : {}; return { ...response, - isJSON() { - return (this.headers['content-type'] as string || '').startsWith('application/json'); + isJSON() { + return ((this.headers['content-type'] as string) || '').startsWith( + 'application/json' + ); }, } as ICurlResponse; } diff --git a/src/lib/request/error/RequestError.ts b/src/lib/request/error/RequestError.ts index a0ba2e3..def3322 100644 --- a/src/lib/request/error/RequestError.ts +++ b/src/lib/request/error/RequestError.ts @@ -8,4 +8,7 @@ export class RequestError extends Error { this.message = `RequestError: ${msg}`; } + toString() { + return this.message; + } } diff --git a/src/lib/request/error/RequestMethodError.ts b/src/lib/request/error/RequestMethodError.ts index 15cc567..bfae021 100644 --- a/src/lib/request/error/RequestMethodError.ts +++ b/src/lib/request/error/RequestMethodError.ts @@ -6,14 +6,17 @@ * @extends {Error} */ export class RequestMethodError extends Error { - /** - * Creates an instance of RequestMethodError. - * @author tunan - * @memberof RequestMethodError - */ - constructor(message?: string) { - super(message); + /** + * Creates an instance of RequestMethodError. + * @author tunan + * @memberof RequestMethodError + */ + constructor(message?: string) { + super(message); - this.message = `RequestMethodError: ${message || this.message}`; - } + this.message = `RequestMethodError: ${message || this.message}`; + } + toString() { + return this.message; + } } diff --git a/src/lib/request/error/UnknowReuqestError.ts b/src/lib/request/error/UnknowReuqestError.ts index 3474c39..7b8f5d2 100644 --- a/src/lib/request/error/UnknowReuqestError.ts +++ b/src/lib/request/error/UnknowReuqestError.ts @@ -1,6 +1,9 @@ export class UnknowReuqestError extends Error { - constructor(message?: string) { - super(message); - this.message = `UnknowReuqestError: ${message || this.message}`; - } + constructor(message?: string) { + super(message); + this.message = `UnknowReuqestError: ${message || this.message}`; + } + toString() { + return this.message; + } }