javascript - 承诺 {api 调用通过从客户端到服务器的节点代理完成时的问题
问题描述
- 我正在为我的 api 调用做一个节点代理。
- 在节点服务器中,我成功地访问了 api 并获得了响应。
- 当我不使用 URL 时,在客户端的哪个位置出现以下错误
filePresentData response----> Promise {<pending>}
- 当我硬编码时,我收到以下错误。
filePresentData error----> Error: Network Error at createError (createError.js:16) at XMLHttpRequest.handleError (xhr.js:87)
- 我通过放置控制台进行调试。
- 但仍然没有成功。
- 在下面提供我的日志、服务器和客户端代码。
- 你能告诉我如何解决它。
动作.js
导出函数 filePresentData() {
console.log(" filePresentData----> ");
var jumpSearch = 'gr';
var searchVal = jumpSearch;
var searchMode = 'smart';
//we are using this replace method to hack the name search Mode
jumpSearch = jumpSearch.replace('/', '%2F');
jumpSearch = jumpSearch.replace('#', '%23');
jumpSearch = jumpSearch.replace('+', '%2B');
jumpSearch = jumpSearch.replace('.', '%2E');
jumpSearch = jumpSearch.replace(/'|-/g, "");
jumpSearch = jumpSearch.replace(/ /g, "%20");
let environment = globalConfig.getConfig('environment');
searchVal = searchVal.replace(/'|-/g, "");
var url = `/hjhjhj/swim/${searchMode}/${jumpSearch}`;
console.log(" fetchjumpData Url---> ", url);
if (environment !== "local") {
url = `/hjhjhj/swim/${searchMode}/${searchVal}`;
console.log(" inside if fetchjumpData Url---> ", url);
}
console.log(" Url----> ", url, searchMode, searchVal, jumpSearch);
return (dispatch) => {
var response;
response = axios.get(url);
//response = axios.get('http://world.com/jkjk/dffddfkldfkldlf/?id=rwekleklerklklerklerk');
console.log(" filePresentData response----> ", response);
response.then((result) => {
console.log(" filePresentData result----> ", result);
if (result) {
dispatch(fetchDataSuccess(result));
}
}).catch((error) => {
console.log(" filePresentData error----> ", error);
dispatch(setSearchError(error));
});
};
}
方案 1 的错误
filePresentData---->
SearchBoxAction.js:214 fetchjumpData Url---> /hjhjhj/swim/smart/gr
SearchBoxAction.js:217 inside if fetchjumpData Url---> /hjhjhj/swim/smart/gr
SearchBoxAction.js:219 Url----> /hjhjhj/swim/smart/gr smart gr gr
SearchBoxAction.js:226 filePresentData response----> Promise {<pending>}
SearchBoxAction.js:235 filePresentData error----> Error: Network Error
at createError (createError.js:16)
at XMLHttpRequest.handleError (xhr.js:87)
Request URL: http://world.com/jkjk/dffddfkldfkldlf/?id=rwekleklerklklerklerk
Request Method: GET
Status Code: 401 Unauthorized
方案 2 的错误
filePresentData---->
SearchBoxAction.js:214 fetchjumpData Url---> /hjhjhj/swim/smart/gr
SearchBoxAction.js:217 inside if fetchjumpData Url---> /hjhjhj/swim/smart/gr
SearchBoxAction.js:219 Url----> /hjhjhj/swim/smart/gr smart gr gr
SearchBoxAction.js:226 filePresentData response----> Promise {<pending>}
filePresentData 结果----> {data: {...}, status: 200, statusText: "OK", headers: {...}, config: {...}, ...} SearchBoxAction.js:235 filePresentData error---->类型错误:networksData.slice 不是函数
服务器文件
const express = require('express');
const axios = require('axios');
const mime = require('mime-types');
const router = express.Router();
const ResponseUtil = require('../../utils/ResponseUtil');
const AppConstants = require('../../../constants/AppConstants');
const credentials = require('../../../internals/credentials.json');
const memberGroupingHelper = require('../../helpers/pcp/memberGrouping');
const exportHelper = require('../../helpers/pcp/pcpExportHelper');
const formatExportData = require('../../helpers/pcp/formatExportData');
const pcpCommonHelper = require('../../helpers/pcp/pcpCommonHelper');
const pcpProvDataHelper = require('../../helpers/group/getProvData');
//const aggregateHelper = require('../../helpers/group/aggregateFilter');
const {
PcpAggregatejumpsApi
} = require('psv-svc-utils');
router.get('/:searchMode/:jumpSearch', (req, res, next) => {
// router.get('/ecmstest', (req, res, next) => {
const {
originalUrl
} = req;
//console.log(" originalUrl ", originalUrl);
const mode = req.params.searchMode;
const value = encodeURIComponent(req.params.jumpSearch);
// const url = `/wewewe/weiopewopewopop/jumps?mode=${mode}&value=${value}`;
console.log("document 40--->", mode);
console.log("for document Testing0--->", mode);
// const url = `http://world.com/jkjk/dffddfkldfkldlf/?id=rwekleklerklklerklerk`;
const url = `/tes/weiopewopewopop/ecmsdocuments/?id=rwekleklerklklerklerk`;
console.log("AppConstants.GET_JWT_TOKEN_URL--->", AppConstants.GET_JWT_TOKEN_URL);
var formatUrl = AppConstants.wewewewewe_CONTENT_CENTRAL + url;
axios.get(AppConstants.GET_JWT_TOKEN_URL, {
auth: {
username: credentials.auth.racfId,
password: credentials.auth.password
}
})
.then((jwtResponse) => {
console.log("jwt then----->", jwtResponse.data.jwt);
console.log('then formatUrl --->', formatUrl);
// Return the promise from get so it is applied to the promise chain
return axios.get(formatUrl, {
headers: {
"Authorization": `Bearer ${jwtResponse.data.jwt}`,
"Content-Type": 'application/json'
}
})
.then((response) => {
// try {
console.log("document suceess then0--->");
const file = Buffer.from(response.data.content, 'base64');
const fileType = mime.contentType(response.data.contentInfo.fileType);
const fileExtension = response.data.contentInfo.fileType.toLowerCase();
const fileName = `filename=${response.data.contentInfo.id}.${fileExtension}`;
console.log("document suceess fileName--->", fileName);
return ResponseUtil.callService(res, url);
})
.catch((e) => {
// Catch any error that occurred in the promise chain...
if (e.response) {
return res.status(e.response.status).send(e.response.data);
}
return res.status(500).send(e.message || 'Something wrong');
});
});
// ResponseUtil.callService(res, url);
});
module.exports = router;
服务器日志
controllers---> [ 'C:/codebase/fddfdf/server/controllers/root.js' ]
server is listening on 1010
callService ===> /hjhjhj/swim/i8cx/userimages
URL ===> http://veg/hjhjhj//i8cx/userimages
searchMode value---> gr
searchMode 3---> Smart
for document Testing---> Smart
callService ===> /hjhjhj/swim?mode=Smart&value=gr
URL ===> http://veg/hjhjhj/?mode=Smart&value=gr
callService ===> /hjhjhj/swim/=-wewewewe/erjkerjkerjkjker?history=false
URL ===> http://veg/hjhjhj//=-wewewewe/erjkerjkerjkjker?history=false
callService ===> /hjhjhj/swim/edfdfdf/erjkerjkerjkjker?history=false
URL ===> http://veg/hjhjhj//edfdfdf/erjkerjkerjkjker?history=false
callService ===> /hjhjhj/swim/wewewewe/erjkerjkerjkjker?history=false
URL ===> http://veg/hjhjhj//wewewewe/erjkerjkerjkjker?history=false
callService ===> /hjhjhj/swim/dew/erjkerjkerjkjker?history=false
URL ===> http://veg/hjhjhj//dew/erjkerjkerjkjker?history=false
callService ===> /hjhjhj/swim/wewewewe/erjkerjkerjkjker?history=false
URL ===> http://veg/hjhjhj//wewewewe/erjkerjkerjkjker?history=false
document 40---> smart
for document Testing0---> smart
AppConstants.GET_JWT_TOKEN_URL---> https://ererll;l;/erklklk
then formatUrl ---> http://world.com/jkjk/dffddfkldfkldlf/?id=rwekleklerklklerklerk
document suceess then0--->
document suceess fileName---> filename=a2c93187-5422-46c7-bcf7-e663c28dcd2e.pdf
callService ===> /jkjk/dffddfkldfkldlf/?id=rwekleklerklklerklerk
else if responseutil.jsURL ===> http://world.com/jkjk/dffddfkldfkldlf/?id=rwekleklerklklerklerk
URL ===> http://world.com/jkjk/dffddfkldfkldlf/?id=rwekleklerklklerklerk
callService ===> /hjhjhj/swim/i8cx/userimages
URL ===> http://veg/hjhjhj//i8cx/userimages
解决方案
推荐阅读
- javascript - Ionic Geolocation 适用于浏览器但不适用于 android 模拟器
- hash - SHA256 Hashing with two blocks:第一个块的哈希应该在哪里输入?
- angular - Angular 12 警告严重依赖:依赖的请求是一个表达式
- node.js - 这个 Sendgrid 服务错误是什么意思
- sql - SQL CASE WHEN:是否有限制(字符数)?
- permissions - Quarkus:在 JWT 中使用权限而不是角色
- flutter - TextFormField 上的 Flutter ConstrainedBox 未按预期设置高度
- javascript - Firebase:分页使用 endAt
- powershell - SelectSingleNode 相对于传递的 XML 上的根节点
- javascript - 如何在 ReactJS 中使用过滤器映射图像数组