diff --git a/src/platforms/app-plus/service/api/plugin/uts.js b/src/platforms/app-plus/service/api/plugin/uts.js index cca1f6b06f26fb4ba08e0e711619663c72e0352e..836f0da14a614e110f9d3f3d7215ec02f7bc6148 100644 --- a/src/platforms/app-plus/service/api/plugin/uts.js +++ b/src/platforms/app-plus/service/api/plugin/uts.js @@ -27,14 +27,22 @@ function getProxy() { } return proxy; } -function resolveSyncResult(res, returnOptions, instanceId, proxy) { - // devtools 环境是字符串? - if (isString(res)) { - res = JSON.parse(res); - } +function resolveSyncResult(args, res, returnOptions, instanceId, proxy) { if ((process.env.NODE_ENV !== 'production')) { console.log('uts.invokeSync.result', res, returnOptions, instanceId, typeof proxy); } + if (!res) { + throw new Error(JSON.stringify(args)); + } + // devtools 环境是字符串? + if (isString(res)) { + try { + res = JSON.parse(res); + } + catch (e) { + throw new Error(`JSON.parse(${res}): ` + e); + } + } if (res.errMsg) { throw new Error(res.errMsg); } @@ -63,7 +71,7 @@ function invokePropGetter(args) { if ((process.env.NODE_ENV !== 'production')) { console.log('uts.invokePropGetter.args', args); } - return resolveSyncResult(getProxy().invokeSync(args, () => { })); + return resolveSyncResult(args, getProxy().invokeSync(args, () => { })); } function initProxyFunction(async, { moduleName, moduleType, package: pkg, class: cls, name: propOrMethod, method, companion, params: methodParams, return: returnOptions, errMsg, }, instanceId, proxy) { const invokeCallback = ({ id, name, params, keepAlive, }) => { @@ -128,7 +136,7 @@ function initProxyFunction(async, { moduleName, moduleType, package: pkg, class: if ((process.env.NODE_ENV !== 'production')) { console.log('uts.invokeSync.args', invokeArgs); } - return resolveSyncResult(getProxy().invokeSync(invokeArgs, invokeCallback), returnOptions, instanceId, proxy); + return resolveSyncResult(invokeArgs, getProxy().invokeSync(invokeArgs, invokeCallback), returnOptions, instanceId, proxy); }; } function initUTSStaticMethod(async, opts) {