Ignat
try { const data = await SignInAPI.signIn(email, passwordCoding(password), rememberMe); if (data.error) { signInError(dispatch, data.error); } else { dispatch(nekoSetName(data.name)); } } catch (e) { signInError(dispatch, e.message); при коде ошибки 400 (например) - кидает в catch, но ошибка приходит с телом - как получить data.error в catch???
Ignat
js react axios
southyyy
@PetrovIliya а это куда мне вставить?
southyyy
я так пнимаю в бек да?
Petrov
Решение
1) npm i cors - пакет установить 2) const cors = require('cors') в том месте, где сервер прописан 3) в файле .env (который нужно поставить в исключение .gitignore) создать переменную окружения NODE_ENV=development, а также создать переменную CLIENT_URL=http://localhost:3000 - порт работы React front
southyyy
дай бог здоровья, сейчас попробую
southyyy
@PetrovIliya не получилось
southyyy
.env
southyyy
NODE_ENV=development CLIENT_URL=http://localhost:3000
southyyy
как я понял
southyyy
переписал установил пакет
southyyy
но ошибка все та же
Petrov
@PetrovIliya не получилось
Убирайте тогда все эти cors пакеты. В файл package.json в реакте где-нибудь разместите строчку "proxy": "http://localhost:4000"
Petrov
в проекте Реакт. Ничего тогда не трогайте в бэке, потом разберетесь. Сейчас эту строчку, чтобы сказать Реакт, что все сетевые запросы будут идти на указанный прокси
Petrov
В самом запросе axios.get('/auth/user') - без localhost, так как реакт уже в курсе откуда получать данные
southyyy
xhr.js:178 GET http://localhost:3000/auth/user 404 (Not Found)
southyyy
очень странно
Petrov
xhr.js:178 GET http://localhost:3000/auth/user 404 (Not Found)
почему 3000, там же реакт. нужно 4000 . порт Express
southyyy
я не очень вопрос понял ваш… у меня запускается реакт на 3000 express на 4000 я поставил прокси на 4000порт, как мне по дефолту сказать что не на 3000 порт а на 4000 порт?
Plum
Подскажите есть ли такой редактор что б в одном окне был код во втором то что получается, тапа https://i.imgur.com/50O5CnJ.jpg
Petrov
я не очень вопрос понял ваш… у меня запускается реакт на 3000 express на 4000 я поставил прокси на 4000порт, как мне по дефолту сказать что не на 3000 порт а на 4000 порт?
Тогда всё же cors библиотечку и такой код const cors = require('cors'); app.use(cors({ origin: 'http://localhost:3000', credentials: true }));
southyyy
proxy удаляю?
Ivan
А
Ivan
А
Ivan
?
Ivan
А ты знаешь что есть заголовки ответа?
Ivan
Ща
Petrov
proxy удаляю?
Всё удаляете, пробуйте. В заголовки ответа тоже вариант, но нужно чуть лучше тогда бэк узнать, там нет ничего сложного
southyyy
xhr.js:178 GET http://localhost:4000/auth/user net::ERR_CONNECTION_REFUSED
Ivan
xhr.js:178 GET http://localhost:4000/auth/user net::ERR_CONNECTION_REFUSED
Заголовки настрой там как-то аксессуары токен и значение *
Ivan
И всё будет
southyyy
хорошо, спасибо
Ivan
Кросс браузерные запросы заголовки
Ivan
Как то так гугли
Ivan
Ща погодь
Petrov
хорошо, спасибо
app.use(function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept'); next(); });
Ivan
Ivan
Все шо в сет хедер
Ivan
Вписыай и будет работать
DIMON
ДД вечер)))
DIMON
Подскажите пож. не работает зануление в textarea
DIMON
DIMON
Код вот
DIMON
const ADD_DOCTOR = 'ADD-DOCTOR'; const UPDATE_NEW_POST_TEXT_DOCTOR = 'UPDATE-NEW-POST-TEXT-DOCTOR'; let initialState = { posts: [ {message: "Doctor 1!!!"}, {message: "Doctor 2!!!"} ], newPostText:'' }; const profileReducer = (state = initialState , action) => { switch (action.type) { case ADD_DOCTOR: let newText = state.newPostText; state.posts.push({message: newText}); state.newPostText =''; return state; case UPDATE_NEW_POST_TEXT_DOCTOR: state.newPostText = action.newText; return state; default: return state; } }; export const addDoctorActionCreator = () => { return { type: ADD_DOCTOR } }; export const updateNewPostTextDoctorActionCreator = (newText) => { return { type: UPDATE_NEW_POST_TEXT_DOCTOR, newText: newText } }; export default profileReducer;
Карен
Лучше сфоткай
DIMON
Карен
Что не работает
DIMON
Не работает state.newPostText ='';
DIMON
не зануляет после нажатия на кнопку
Карен
Но добовляет?
Карен
добавляет
DIMON
да
Карен
Именно то, что пишешь?
DIMON
да все проверил
Карен
Комноненту тоже заскринь
Pasha
Ребят, решил немного поэкспериментировать и в методе подписки на пользователя вместо копии элемента со стейта взял оригинальный элемент, оно в итоге ругается на то, что не может взять какое-то свойство у undefined Хотел уточнить, это же получается я пытаюсь изменить оригинальный массив пользователей из стейта(который на сервере),из-за этого оно получает неправильный объект из массива и в итоге undefined?
Pasha
DIMON
ВСЕ ПОЛУЧИЛОСЬ Я НАШЕЛ ОШИБКУ СПАСИБО ВСЕМ
Pasha
ты не можешь изменить из сервера....ты получил данные и верти их как угодно
тогда по идее оно должно работать даже если я не делаю копию данных, но оно не работает, почему?
SV
тогда по идее оно должно работать даже если я не делаю копию данных, но оно не работает, почему?
а строку как на скрине...можно рвать так?.. ладно ...я всеравно с мобилы опять хочу чёт помочь )) эт с компа над
Pasha
ничего не изменяется, даже если я ставлю строку по-другому)
SV
ничего не изменяется, даже если я ставлю строку по-другому)
я б кроч видос с подпиской пересмотрел у Димыча
serhii
action.payload.id должно там быть, если action.payload это у тебя обьект у которого есть id
serhii
и заверни в массив
serhii
arrauFoundUser: [...state.arrauFoundUser.map(..........) ]
ⓋⓁⒶⓓ
Кто подскажет как исправить?
ⓋⓁⒶⓓ
ⓋⓁⒶⓓ
и если просто через онклик тоже Null
serhii
проверь свой input
Pasha
arrauFoundUser: [...state.arrauFoundUser.map(..........) ]
payload у меня нет, код весь рабочий, если делать копию item. Обернул в массив, все равно вываливается в ошибку, но при обновлении подписка/отписка уже изменена
serhii
точно ли берешь по id и получаешь
ⓋⓁⒶⓓ
там button
ⓋⓁⒶⓓ
ⓋⓁⒶⓓ
а тю
ⓋⓁⒶⓓ
сори понял
ⓋⓁⒶⓓ
спасибо)))