Получение браузерной ошибки Edge Browser - TypeError: объект не поддерживает свойство или метод 'get' - PullRequest
0 голосов
/ 11 января 2019

Я написал код с использованиемact.js и redux saga для загрузки файла. Внутренний вызов API происходит, когда нажимается кнопка загрузки и файл с идентификатором добавляется в FormData и передается в вызов API. Все отлично работает в Google Chrome и Mozilla Firefox, то есть, файл загрузки. Но то же самое не работает в браузере Edge. Файл, кажется, загружается, но страница падает и не работает до перезагрузки.

Я получаю следующие ошибки при вызове API.

SCRIPT5022: Objects are not valid as a React child (found: TypeError: Object doesn't support property or method 'get'). If you meant to render a collection of children, use an array instead.
    in span (created by MessageAlert)
    in div (created by MessageAlert)
    in MessageAlert (created by Connect(MessageAlert))
    in Connect(MessageAlert) (created by Routes)
    in Routes (created by Connect(Routes))
    in Connect(Routes) (created by App)
    in Provider (created by App)
    in App
    in AppContainer

Вышеуказанная ошибка произошла в компоненте:

in span (created by MessageAlert)
in div (created by MessageAlert)
in MessageAlert (created by Connect(MessageAlert))
in Connect(MessageAlert) (created by Routes)
in Routes (created by Connect(Routes))
in Connect(Routes) (created by App)
in Provider (created by App)
in App
in AppContainer

React попытается воссоздать это дерево компонентов с нуля, используя предоставленную вами границу ошибки, AppContainer.

, а также некоторые ошибки, такие как невозможность получить свойство «содержит» неопределенной или нулевой ссылки. Невозможно найти узел в размонтированном компоненте.

Как уже упоминалось, это происходит только в браузере Edge, также пытались обновить его, но не сработало. Все отлично работает в Chrome и Mozilla.

найдите фрагменты кода вероятной причины ошибки.

    export function* fileUploadSaga(action) {
    const { payload } = action;
    if (payload) {
    const url = '/rest/files/upload';
    try {
    if (payload.data && payload.data.offset === 0)
    yield put(loaderEnable());
    const channel = yield call(uploadFileRequest, url, payload.data);
    while (true) {
    const { progress, err, success, response, xhr } = yield 
    take(channel);
    yield put(storeFileProgress({
    file: payload.data && payload.data.get('file'),
    fileSize: payload.data && payload.data.get('file')['size'],
    progress: progress || 100,
    fileName: payload.data && payload.data.get('file')['name'],
    xhr: xhr
    }));
    if (err) {
    yield put(showMessageAlert({
    message: 'Error uploading file!',
    visible: true,
    type: 'error',
    }));
    if (payload.data && payload.data.offset === 0)
    yield put(loaderDisable());
    return;
    }
    if (success && response) {
    yield put(storeFileProgress({
    file: payload.data && payload.data.get('file'),
    fileSize: payload.data && payload.data.get('file')['size'],
    progress: 100,
    fileName: payload.data && payload.data.get('file')['name'],
    xhr: xhr
    }));
    yield put(showMessageAlert({
    message: 'file uploaded successfully',
    visible: true,
    type: 'success',
    }));
    yield put(updateFiles({
    response: response && response.entity,
    isAdd: true,
    }));
    handleClick('File Manager', 'File Upload', 'File Upload');
    if (payload.data && payload.data.offset === 0)
    yield put(loaderDisable());
    }
    }

это код саги, где происходит вызов API.

    handleFileUpload = () => {
            const repoIdList = [];
            this.state.selectedRepo &&
            this.state.selectedRepo.forEach((repo) => {
                repoIdList.push(repo.id);
            });
            this.state.storeUploadedFiles &&
            this.state.storeUploadedFiles.forEach(file => {
                let data = new FormData();
                data.append('file', file);
                repoIdList && repoIdList.forEach(id => 
         data.append('id', id));
                // debugger

        this.props.dispatch(handleFileUploadInManager({data}));
            });
            // debugger
            this.props.closePopup();
        };

это код, где саги называется .... имеется в виду API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...