#reactjs #react-router #polyfills
#reactjs #реагировать-маршрутизатор #полизаполнения
Вопрос:
Я только что обновил свое приложение react, включив новейший react router версии 5.2, чтобы получить доступ к useHistory. Все работало нормально, пока я не перезапустил его в первый раз на следующее утро. Теперь, когда я использую f5 для запуска сеанса отладки, я получаю исключение в файле модулей узла с именем json3. (Кстати, приложение нормально запускается в браузере после запуска yarn.) Исключением является «ошибка синтаксиса: неожиданный токен в JSON в позиции 1». Код находится в строке 186 в json3.js:
186 parseSupported = !parse('"t"');
Я прочитал json3 README.md и в нем говорится: «JSON 3 устарел и больше не поддерживается. Пожалуйста, не используйте его в новых проектах и перенесите существующие проекты, чтобы вместо этого использовать собственный JSON.parse
и JSON.stringify
. JSON 3 был полизаполнением JSON для старых платформ JavaScript.» Я не знаю, как это было установлено, и я не думаю, что мне это нужно. Его нет в моем package.json. Он находится на верхнем уровне в node_modules. Как мне это удалить?
На всякий случай, если это необходимо, мой package.json — это:
{
"name": "blue-duck-pwa",
"version": "0.1.0",
"private": true,
"devDependencies": {
"enzyme": "3.2.0",
"enzyme-adapter-react-16": "^1.1.0",
"eslint": "^6.8.0",
"eslint-config-prettier": "^6.10.0",
"eslint-plugin-react": "^7.18.3",
"faker": "^4.1.0",
"prettier": "2.0.1",
"react-scripts": "1.1.0",
"react-test-renderer": "16.0.0",
"redux-devtools": "^3.4.1",
"redux-devtools-dock-monitor": "1.1.4",
"redux-devtools-log-monitor": "2.0.1",
"redux-logger": "^3.0.6"
},
"dependencies": {
"add": "^2.0.6",
"base-64": "^0.1.0",
"bootstrap": "^3.3.7",
"chart.js": "2.9.3",
"cheerio": "0.19.x",
"file-saver": "^1.3.8",
"history": "^4.6.3",
"lodash": "^4.17.4",
"lodash.clonedeep": "^4.5.0",
"prop-types": "15.6.0",
"rc-dropdown": "^2.1.0",
"rc-menu": "^6.2.5",
"react": "16.13.0",
"react-auto-suggest": "^0.0.12",
"react-bootstrap": "0.32.0",
"react-chartjs-2": "2.6.4",
"react-dom": "16.13.0",
"react-notification-system": "0.2.16",
"react-portal": "^4.0.0",
"react-redux": "^5.0.6",
"react-router": "5.2.0",
"react-router-bootstrap": "0.25.0",
"react-router-dom": "5.2.0",
"react-scrollchor": "^4.2.1",
"react-sizes": "1.0.0",
"redux": "^3.7.2",
"redux-promise-middleware": "^5.0.0",
"redux-thunk": "^2.2.0",
"uuid": "^3.1.0",
"xml2js": "0.4.19"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject"
}
}
Комментарии:
1. Возможно, я здесь ошибаюсь, но я думаю , что вы можете сначала удалить его из своего package.json, затем удалить свои node_modules, а затем создать новый
npm install
2. Попробуйте удалить папку node_modules, а затем запустите npm install.
3. Я просто попытался запустить yarn install без папки node_module, и json3 был добавлен снова в новые node_modules
4. @jagraj singh В процессе устранения и повторной попытки установки yarn с различными файлами, удаленными из package.json, я вижу, что именно react-скрипты добавляют json3 в node_modules. это сделали мои оригинальные react-скрипты версии v1.1.0, а также последние react-скрипты версии v3.4.3. Итак, что я могу сделать? Мне нужны react-скрипты!
Ответ №1:
Из-за конфликтов, которые я вызвал, обновив мои node_modules без учета критических изменений (глупо, я знаю), я смог решить эту проблему, только начав заново. Я создал другое create-react-app, скопировал свой package.json (с исправленными номерами версий), запустил yarn install, затем скопировал все мои программные данные: src, .vscode, .eslintrc и т.д. и т.п. С несколькими простыми исправлениями это сработало. Никаких исключений глубоко в node_modules.