# 常见问题
# 如果cli 用户npm 引入报错?
插件使用es6,es7 开发,好处就是结构清晰,语义化,开发代码少,并且对于目前的我来说,完全没有必要使用es5开发。
为什么不用babel解决:babel 编译后的代码对uni的条件编译注释不友好。如果不用条件编译则不能发挥最大优势。
这样存在的问题:对于HBuilderX 创建的项目完全没有影响,idea 会对node_modules 里的插件条件编译,并且babel。主要是cli 用户,cli 不会对node_modules 里的代码babel。
可尝试如下配置
// vue.config.js
module.exports = {
transpileDependencies: ['luch-request']
}
# 为什么会请求两次?
如果其中有options
请求:本地访问接口时跨域请求,所以浏览器会先发一个option 去预测能否成功,然后再发一个真正的请求
。(自己观察请求头,Request Method,百度简单请求
)
# 如何跨域?
问的人不少,可以先百度了解一下。如何跨域
# TypeError: undefined is not an object (evaluating 'this.$http.get')
不知道为啥问的人这么多?太基础了,百度学习一下 export default 和export,头大。
import { http } from '@/utils/luch-request/index.js'
# 什么参数需要在setConfig
设置?什么参数需要在request
拦截器设置?
setConfig
适用于设置一些静态的/默认的参数;比如header 里的一些默认值、默认全局参数(全局请求配置)。token
并不适合在这里设置。interceptors.request
拦截器适用范围较广,但我仍然建议把一些静态的东西放在setConfig
里。拦截器会在每次请求调用,而setConfig
仅在调用时修改一遍。
# 如何jwt无痛刷新?
# 如何配置超时时间?
全局
网络请求的 超时时间 可以统一在 manifest.json 中配置 networkTimeout (opens new window)
插件的全局配置超时时间:插件-全局请求配置-timeout。必须请求方法和终端支持timeout
,支持度参照timeout 支持度
局部
局部配置项timeout
:timeout。必须请求方法和终端支持timeout
,支持度参照timeout 支持度
如果终端和请求方式不支持timeout
,可参考如下实现
http.request({
method: 'POST', // 请求方法必须大写 [GET|POST|PUT|DELETE|CONNECT|HEAD|OPTIONS|TRACE]
url: '/user/12345',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
},
params: { // 会拼接到url上
token: '1111'
},
// 返回当前请求的task, options。请勿在此处修改options。非必填
getTask: (task, options) => {
// 500ms 后终止请求
setTimeout(() => {
task.abort()
}, 500)
}
})
# 发送FormData?
uni 不支持发送FormData
对象
对于 POST 方法且 header['content-type'] 为 application/json 的数据,会进行 JSON 序列化。
对于 POST 方法且 header['content-type'] 为 application/x-www-form-urlencoded 的数据,会将数据转换为 query string。
所以,如果你想发送formData 类型数据,请将header['content-type']
设置为 application/x-www-form-urlencoded
。
如果你的formData 里有file
怎么办?请使用插件的upload方法。
# 后台返回bigInt类型处理?
3.0.8
版本给response
新增 rawData
字段,保存原始数据。请在拦截器自定义处理该字段。或者局部处理。