import React from 'react'; import ReactDOM from 'react-dom'; import './index.css'; import App from './App'; import { AppContainer } from 'react-hot-loader'; import registerServiceWorker from './registerServiceWorker'; import { configureUrlQuery } from 'react-url-query'; // import history from './history'; import { Provider } from 'react-redux' import { ConnectedRouter } from 'connected-react-router' import store, { history } from './store' import axios from 'axios'; import { isDev } from 'educoder'; // import { initMock } from './axiosMock.js' import './index.css' // link the history used in our app to url-query so it can update the URL with it. configureUrlQuery({ history }); // ----------------------------------------------------------------------------------- 请求配置 window.__useKindEditor = false; // TODO 避免重复的请求 https://github.com/axios/axios#cancellation // https://github.com/axios/axios/issues/1497 // TODO 读取到package.json中的配置? var proxy = "http://localhost:3000" // proxy = "http://testbdweb.trustie.net" proxy = "http://testbdweb.educoder.net" // proxy = 'http://192.168.0.195:3000' proxy ='https://testbdweb.educoder.net' proxy ='http://testbdweb.educoder.net' // proxy='https://www.educoder.net' const requestMap={}; // 在这里使用requestMap控制,避免用户通过双击等操作发出重复的请求; // 如果需要支持重复的请求,考虑config里面自定义一个allowRepeat参考来控制 // 模拟请求,开启后可以使用假数据,脱离后台开发。 注意,上线正式版时,需要注释掉mock调用,mock.js有30kb+的大小 if (isDev()) { // initMock(true, proxy) // console.error("******* 注意!开启接口mock,这会导致没mock配置的请求返回404 ******") } window.setfalseInRequestMap = function(keyName) { requestMap[keyName] = false; } axios.interceptors.request.use( config => { // if (token) { // 每次发送请求之前判断是否存在token,如果存在,则统一在http请求的header都加上token,不用每次请求都手动添加了 // config.headers.Authorization = token; // } var url = config.url; // --------------------------------------------- 測試3007连测试服的代码 // if (url.indexOf('file_update') != -1 || url.indexOf('game_build') != -1 || url.indexOf('game_status') != -1) { // proxy = 'https://testbdweb.trustie.net' // } else { // proxy = 'http://localhost:3000' // } // --------------------------------------------- if (window.location.port === "3007" && !url.startsWith('http')) { // 表示为开发模式 config.url = `${proxy}${url}`; // 开发模式下直接跨域请求 } if (requestMap[config.url] === true) { // 避免重复的请求 return false; } // 非file_update请求 && 非open_webssh if (config.url.indexOf('file_update') === -1 && config.url.indexOf('open_webssh') === -1) { requestMap[config.url] = true; window.setTimeout("setfalseInRequestMap('"+config.url+"')", 900) } // setTimeout("setfalseInRequestMap(" + config.url + ")", 1200) return config; }, err => { return Promise.reject(err); }); axios.interceptors.response.use(function (response) { requestMap[response.config.url] = false; return response; }, function (error) { return Promise.reject(error); }); // ----------------------------------------------------------------------------------- const render = (Component) => { ReactDOM.render( , document.getElementById('root') ); } // document.getElementById('root')); registerServiceWorker(); render(App); if (module.hot) { module.hot.accept('./App', () => { render(App) }); }