我正在努力寻找快速解决问题的方法,因为客户抱怨网站无法在 IE 上呈现。我做了一些研究,我遇到了这个react-app-polyfill/ie11
。我已将它作为入口点插入到src/index.js
我的 IE 11 上我看到我的项目(只有登录)在我的工作,但登录后它再次重定向回登录页面。IE 抛出的错误是:
DOM7011 : The code on this page disabled back and forward caching.
Unhandled promise rejection TypeError: Unable to get property 'data' of undefined or null reference
过了一会儿,我也遇到了这个: https ://reactjs.org/docs/javascript-environment-requirements.html
新的 JavaScript 环境要求。基本上,他们建议启用index.js
此
作为入口点import 'core-js/es/map';
import 'core-js/es/set';
到目前为止,我不知道发生了什么,但该应用程序仍然无法在 IE 上正常运行。有人可以给我一些建议该怎么做吗?
更新的Login.js
export default class Login extends Component {
constructor(props) {
super(props);
this.state = {
translations: EN_TRANSLATIONS,
clientNumber: "",
password: "",
redirectToReferrer: '',
loginErrorMessage: "",
lockedUntilDate: ''
};
}
async componentWillMount() {
let tenant = window.location.hostname
axios.post(SERVER_URL + '/api/user/page', {
tenant: tenant
})
.then(response => {
localStorage.setItem('page', JSON.stringify(response.data.branding));
localStorage.setItem('tenant', tenant);
this.setState({
branding: response.data.branding,
tenant: tenant,
pageReady: true
});
});
login = () => {
axios.post(SERVER_URL + '/api/user/access', {
tenant: this.state.tenant,
customerNumber: parseInt(this.state.clientNumber),
password: sha1(this.state.password + FE_SALT)
})
.then(response => {
localStorage.setItem('token', response.data.token);
localStorage.setItem('access', JSON.stringify(response.data.branding));
this.setState({
branding: response.data.branding,
accessReady: true
});
if (this.state.accessReady) {
if (response.data.passwordValidity >= 0) {
Auth.authenticate(response => {
this.setState({ redirectToReferrer: 'dashboard' })
});
} else {
Auth.authenticate(response => {
this.setState({ redirectToReferrer: 'changePassword' })
});
}
}
})
``
index.js
import 'react-app-polyfill/ie9';
import 'react-app-polyfill/ie11';
import 'react-app-polyfill/jsdom';
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
import { BrowserRouter } from "react-router-dom";
ReactDOM.render(
<BrowserRouter>
<App />
</BrowserRouter>,
document.getElementById("root")
);
我还标记了我无法导入,'react-app-polyfill/stable'
我认为这应该可以,但我不确定。
更新
我已经删除node_modules
并再次安装react-app-polyfill
。现在'react-app-polyfill/stable'
已识别,但我遇到了另一个错误。
SCRIPT438: Object doesn't support property or method 'repeat'
...这个IE让我发疯了...
更新
Okey,所以我能够删除我的私人路线并使登录后的每条路线都可见<Route/>
。如果我硬编码 URL 路径并禁用安全性,我可以访问我的仪表板页面。所以这让我认为问题来自<Redirect/>
组件。因为他是唯一站在登录和仪表板之间的人。IE
任何建议为什么和之间的冲突<Redirect/>
???