2124
This commit is contained in:
@@ -13,6 +13,8 @@ export function POST(url, data) {
|
||||
}
|
||||
|
||||
export function POST_TOKEN(url, data) {
|
||||
// 从本地存储获取token
|
||||
var token = uni.getStorageSync("APP_TOKEN") || "";
|
||||
return SIMPLE_TOKEN(url, data, token, 'POST');
|
||||
}
|
||||
|
||||
@@ -27,21 +29,30 @@ export function PUT(url, data) {
|
||||
let requestTime = 0;
|
||||
|
||||
export async function SIMPLE(url, data, method) {
|
||||
// 防止首次访问没有token
|
||||
if(requestTime == 0) {
|
||||
token = await loginSystem();
|
||||
if(token.data) {
|
||||
// 如果有code表示没有拿到token
|
||||
SIMPLE(url, data, method)
|
||||
return;
|
||||
// 声明token变量
|
||||
let token = uni.getStorageSync("APP_TOKEN") || "";
|
||||
|
||||
// 在开发环境下跳过自动登录,避免网络请求失败
|
||||
// 微信小程序无法访问localhost,需要使用实际IP或域名
|
||||
if(requestTime == 0 && process.env.NODE_ENV !== 'development') {
|
||||
try {
|
||||
token = await loginSystem();
|
||||
if(typeof token === 'string') {
|
||||
requestTime += 1;
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("登录系统失败:", error);
|
||||
}
|
||||
} else if(requestTime == 0) {
|
||||
requestTime += 1;
|
||||
} else {
|
||||
var token = uni.getStorageSync("APP_TOKEN");
|
||||
}
|
||||
|
||||
const fullUrl = `${BASE_URL}${url}`;
|
||||
console.log(`[网络请求] ${method} ${fullUrl}`, data);
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.request({
|
||||
url: `${BASE_URL}${url}`,
|
||||
url: fullUrl,
|
||||
method: method,
|
||||
header: {
|
||||
"Content-Type": "application/json;charset=utf-8",
|
||||
@@ -50,13 +61,39 @@ export async function SIMPLE(url, data, method) {
|
||||
dataType: 'json',
|
||||
data: data,
|
||||
success: res => {
|
||||
if(res.data.code == '200' || res.data.statusCode == '200') {
|
||||
resolve(res.data)
|
||||
console.log(`[网络响应] ${method} ${fullUrl}`, res.data);
|
||||
// 首先检查HTTP状态码
|
||||
if(res.statusCode === 200) {
|
||||
// 无论返回内容是什么格式,都视为成功
|
||||
resolve(res)
|
||||
} else {
|
||||
reject(res)
|
||||
}
|
||||
},
|
||||
fail: err => {
|
||||
console.error(`[网络错误] ${method} ${fullUrl}`, err);
|
||||
// 提供更友好的错误信息
|
||||
let errorMsg = "网络请求失败";
|
||||
if(err.errMsg && err.errMsg.includes('url not in domain list')) {
|
||||
errorMsg = "请求地址未在小程序管理后台配置,请联系管理员";
|
||||
// 在开发环境下显示更详细的解决方案
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
console.error('\n=== 开发环境网络请求错误解决方案 ===');
|
||||
console.error('错误原因:请求的URL不在小程序合法域名列表中');
|
||||
console.error('当前请求URL:', fullUrl);
|
||||
console.error('解决方案:');
|
||||
console.error('1. 在微信开发者工具中,点击右上角的"详情"');
|
||||
console.error('2. 选择"本地设置"');
|
||||
console.error('3. 勾选"不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书"');
|
||||
console.error('4. 重新编译小程序');
|
||||
console.error('==================================\n');
|
||||
}
|
||||
} else if(err.errMsg && err.errMsg.includes('connect fail')) {
|
||||
errorMsg = "网络连接失败,请检查网络设置";
|
||||
} else if(err.errMsg && err.errMsg.includes('localhost')) {
|
||||
errorMsg = "无法连接到本地服务器,请检查BASE_URL配置";
|
||||
}
|
||||
err.userFriendlyMsg = errorMsg;
|
||||
reject(err)
|
||||
}
|
||||
})
|
||||
@@ -64,9 +101,12 @@ export async function SIMPLE(url, data, method) {
|
||||
}
|
||||
|
||||
export function SIMPLE_TOKEN(url, data, token, method) {
|
||||
const fullUrl = `${BASE_URL}${url}`;
|
||||
console.log(`[网络请求] ${method} ${fullUrl}`, data);
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.request({
|
||||
url: `${BASE_URL}${url}`,
|
||||
url: fullUrl,
|
||||
method: method,
|
||||
header: {
|
||||
"Content-Type": "application/json;charset=utf-8",
|
||||
@@ -75,13 +115,25 @@ export function SIMPLE_TOKEN(url, data, token, method) {
|
||||
dataType: 'json',
|
||||
data: data,
|
||||
success: res => {
|
||||
if(res.data.code == '200' || res.data.statusCode == '200') {
|
||||
resolve(res.data)
|
||||
console.log(`[网络响应] ${method} ${fullUrl}`, res.data);
|
||||
// 首先检查HTTP状态码
|
||||
if(res.statusCode === 200) {
|
||||
// 无论返回内容是什么格式,都视为成功
|
||||
resolve(res)
|
||||
} else {
|
||||
reject(res)
|
||||
}
|
||||
},
|
||||
fail: err => {
|
||||
console.error(`[网络错误] ${method} ${fullUrl}`, err);
|
||||
// 提供更友好的错误信息
|
||||
let errorMsg = "网络请求失败";
|
||||
if(err.errMsg && err.errMsg.includes('url not in domain list')) {
|
||||
errorMsg = "请求地址未在小程序管理后台配置,请联系管理员";
|
||||
} else if(err.errMsg && err.errMsg.includes('connect fail')) {
|
||||
errorMsg = "网络连接失败,请检查网络设置";
|
||||
}
|
||||
err.userFriendlyMsg = errorMsg;
|
||||
reject(err)
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user