|
|
3 yıl önce | |
|---|---|---|
| .. | ||
| common | 3 yıl önce | |
| pages | 3 yıl önce | |
| changelog.md | 3 yıl önce | |
| package.json | 3 yıl önce | |
| readme.md | 3 yıl önce | |
一款调试工具,方便您在APP上无法连接电脑时查看Console,网络请求,报错,Storage。
导入插件后,请在您的代码中安装,让 IMDebuggerWindow 正常运行。
pages.json 中添加页面:{
"pages": [
...,
{
"path": "uni_modules/imengyu-IMDebuggerWindow/pages/debugger",
"style": {
"navigationBarTitleText": "调试输出窗口",
"disableScroll": true,
"background": "transparent"
}
}
]
}
import { debuggerModule } from 'uni_modules/imengyu-IMDebuggerWindow/common/debuggerExtern.js'
const errorHandler = (err, vm, info) => {
if(debuggerModule) debuggerModule.addVueError(err, vm, info);
}
Vue.config.errorHandler = errorHandler;
import { debuggerModule, installDebugger } from 'uni_modules/imengyu-IMDebuggerWindow/common/debuggerExtern.js'
export default {
onLaunch: function() {
//这里配置是在调试模式下才开启,您也可以去掉判断,在任何时候都开启
if(process.env.NODE_ENV === 'development')
installDebugger({
enableRequestInterceptor: false //默认为false,指示是否拦截网络请求,参见下一条
showGlobalFloatWindow: true //默认为true,指定是否添加一个全局的调试按钮,点击可跳转至窗口
});
},
onUnhandledRejection: function(err) {
if(debuggerModule) debuggerModule.addAppErr(err);
},
onError: function(err) {
if(debuggerModule) debuggerModule.addAppErr(err);
}
}
js
import { debuggerEnabled, debuggerModule } from 'uni_modules/imengyu-IMDebuggerWindow/common/debuggerExtern.js'
instance.interceptors.response.use(
response => {
if(debuggerEnabled())
debuggerModule.addNetworkLog({
url: response.config.url,
method: response.config.method,
sourceUrl: response.config.url,
status: response.status,
},
response.config,//请求数据,将显示在Option字段中
response.data//返回数据,将显示在Data字段中
)
return response
},
error => {
if(debuggerEnabled())
debuggerModule.addAppErr(error) //可输出错误至错误窗口
return Promise.reject(error.response.status) // 返回接口返回的错误信息
}
)
js
import { showDebuggerWindow } from 'uni_modules/imengyu-IMDebuggerWindow/common/debuggerExtern.js'
onClick() {
showDebuggerWindow(); //显示调试窗口
}
默认情况下,uniapp 无法添加一个全局的弹出框,IMDebuggerWindow实现是采用一个全局页面,点击“调试”按钮,会跳转至页面,从而达到显示一个虚假“弹出框”的效果。
这种页面是不能边交互边看日志的,需要返回再打开,很麻烦。
IMDebuggerWindow还有一个组件化调试输出窗口,可以在您的页面上弹出,并可以调整大小,方便您边交互边看日志,示例代码如下:(也可参考示例项目中的示例)
<template>
<view class="content">
<button @click="showDebuggerWindow=true">以组件模式弹出调试窗口</button>
<debuggerBox v-if="showDebuggerWindow" @close="showDebuggerWindow=false" />
</view>
</template>
<script>
import debuggerBox from '@/uni_modules/imengyu-IMDebuggerWindow/pages/components/debuggerBox.vue'
export default {
components: {
debuggerBox
},
data() {
return {
showDebuggerWindow: false,
}
},
}
</script>
你可以在自己项目的公共组件中包括上面的调试窗口代码,然后在一个按钮中打开,这样每个页面都可以弹出调试器了。
installDebugger(options): void 安装调试窗口以及拦截器,推荐在 App.vue 中安装。
enableRequestInterceptor: boolean 默认 false, 指示是否拦截uni.request网络请求,为false时需要手动记录网络请求数据。showGlobalFloatWindow: boolean 默认为true,指定是否在全局页面左下角添加一个的调试按钮,点击可跳转至窗口showDebuggerWindow(): void 手动显示调试窗口。debuggerEnabled(): boolean 获取当前调试窗口是否已经安装debuggerModule 调试日志模块,包含一些方法可供手动写入日志,如下:
addNetworkLog(info, options, data) : void 添加网络请求日志。日志显示在 Network 中。addAppErr(err : Error) : void 添加报错日志。日志显示在 Error 中。addLog(info) : void 手动添加console日志。