Машинопись create-response-app не запускает npm start

Я пытаюсь create-react-app использовать машинописный текст, но, похоже, возникла проблема с JSX и TS. Я прочитал несколько возможных решений, которые у меня не сработали.

У меня есть:

  • npm: версия 16.14.7
  • узел: версия 14.8.0

Я использовал npx create-react-app my-app --template typescript из документации

Установка прошла нормально, но когда я пытаюсь запустить npm start, я получаю такую ​​ошибку:

> [email protected] start /Users/lukasbenediktson/Desktop/react-types/my-app
> react-scripts start

/Users/lukasbenediktson/Desktop/react-types/my-app/node_modules/react-scripts/scripts/utils/verifyTypeScriptSetup.js:239
      appTsConfig.compilerOptions[option] = value;
                                          ^

TypeError: Cannot assign to read only property 'jsx' of object '#<Object>'
    at verifyTypeScriptSetup (/Users/lukasbenediktson/Desktop/react-types/my-app/node_modules/react-scripts/scripts/utils/verifyTypeScriptSetup.js:239:43)
    at Object.<anonymous> (/Users/lukasbenediktson/Desktop/react-types/my-app/node_modules/react-scripts/scripts/start.js:31:1)
    at Module._compile (internal/modules/cjs/loader.js:1251:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1272:10)
    at Module.load (internal/modules/cjs/loader.js:1100:32)
    at Function.Module._load (internal/modules/cjs/loader.js:962:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
    at internal/main/run_main_module.js:17:47
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: `react-scripts start`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

Я попытался изменить эту строку 238 в node_modules/react-scripts/scripts/utils/verifyTypeScriptSetup.js как , предложенный tudor07 здесь:

} else if (parsedCompilerOptions[option] !== valueToCheck) {

to

} else if (parsedCompilerOptions[option] !== valueToCheck && option !== "jsx") {

и это позволило мне запустить npm start, и сервер заработал. Но теперь выясняется, что он не распознает JSX / TSX:

TypeScript error in /Users/lukasbenediktson/Desktop/react-types/my-app/src/App.tsx(7,5):
Could not find a declaration file for module 'react/jsx-runtime'. '/Users/lukasbenediktson/Desktop/react-types/my-app/node_modules/react/jsx-runtime.js' implicitly has an 'any' type.
  If the 'react' package actually exposes this module, consider sending a pull request to amend 'https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react`  TS7016

     5 | function App() {
     6 |   return (
  >  7 |     <div className="App">
       |     ^
     8 |       <header className="App-header">
     9 |         <img src={logo} className="App-logo" alt="logo" />
    10 |         <p>

Мой package.json выглядит так:

{
  "name": "my-app",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.11.4",
    "@testing-library/react": "^11.1.0",
    "@testing-library/user-event": "^12.1.10",
    "react": "17.0.1",
    "react-dom": "17.0.1",
    "react-scripts": "4.0.0",
    "typescript": "^4.0.3",
    "web-vitals": "^0.2.4"
  },
  "devDependencies": {
    "@types/jest": "^26.0.15",
    "@types/node": "^12.0.0",
    "@types/react": "^16.9.53",
    "@types/react-dom": "^16.9.8"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}

Спасибо за уделенное время.

ОБНОВЛЕНИЕ: РЕШЕНИЕ (по крайней мере, для меня)

В моем tsconfig.json я изменил свой "compilerOptions": с "jsx": "react-jsx" на "jsx": "react". Обратите внимание, что мне все еще нужно было внести изменения в строку 238 в моем node_modules/react-scripts/scripts/utils/verifyTypeScriptSetup.js как предложено tudor07 здесь

Пожалуйста, дайте мне знать, если это слишком взломано


person idkwhatsgoingon    schedule 20.11.2020    source источник
comment
Я заметил, что у вас есть реакция: 17, но типы предназначены для реакции 16. Пожалуйста, обновите свой @ types / response до версии 17. *. Также переместите @types / ** в devDependencies   -  person captain-yossarian    schedule 20.11.2020
comment
@ types / react говорит, что последняя версия - 16.9.56? @ капитан-йоссариан   -  person idkwhatsgoingon    schedule 20.11.2020
comment
Вот ссылка на исходный код: github.com/facebook/create-react-app/blob/ Найдите verifyTypeScriptSetup в своих node_modules (node_modules / response-scripts / scripts / utils / verifyTypeScriptSetup.js: 239) и добавьте туда console.logs. Вам будет проще отлаживать   -  person captain-yossarian    schedule 20.11.2020
comment
@ captain-yossarian, спасибо, но извините, я не совсем понимаю, что должен делать. вы читали мое обновление в вопросе? Я думаю, что здесь обнаружена настоящая ошибка   -  person idkwhatsgoingon    schedule 20.11.2020


Ответы (2)


В моем случае @ captain-yossarian был прав. Устаревшие типы (@types/[email protected]) для указанной версии React ([email protected]). Чинить:

npm install --upgrade @types/react@17
person Chris    schedule 01.12.2020

У меня была такая же проблема, я удалил файл tsconfig.json, затем запустил yarn start, и он сработал

Возможно, проблема с приложением create-response-app, я удалил его, а затем переустановил

person Dimitri Dumont    schedule 22.11.2020