Как мне удалить ненужный модуль json3 из моих node_modules?

#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.