4

I am trying to create-react-app with typescript, but there seems to be a problem with JSX and TS. I read a couple of possible solutions, that didn't work out for me.

I have:

  • npm: version 16.14.7
  • node: version 14.8.0

I used npx create-react-app my-app --template typescript from the docs

The installation went fine, but when I try to run npm start it gives me this error:

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

/Users/.../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/.../react-types/my-app/node_modules/react-scripts/scripts/utils/verifyTypeScriptSetup.js:239:43)
    at Object.<anonymous> (/Users/.../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.

I tried to change this line 238 in node_modules/react-scripts/scripts/utils/verifyTypeScriptSetup.js as suggested by tudor07 here:

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

to

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

and that let me run npm start and the server is up and running. But it now reveals that it won't recognize JSX/TSX:

TypeScript error in /Users/.../react-types/my-app/src/App.tsx(7,5):
Could not find a declaration file for module 'react/jsx-runtime'. '/Users/.../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>

My package.json looks like this:

{
  "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"
    ]
  }
}

Thank you for your time.

UPDATE: SOLUTION (for me at least)

In my tsconfig.json I changed the my "compilerOptions": from "jsx": "react-jsx" to "jsx": "react". Notice that I still needed to make a change on line 238 in my node_modules/react-scripts/scripts/utils/verifyTypeScriptSetup.js as suggested by tudor07 here

Please let me know if it's too "hacky"

4
  • 2
    I have noticed, that you have react:17 but types is for react 16. Please update your @types/react to v.17.*. Also move your @types/** to devDependencies Commented Nov 20, 2020 at 9:15
  • @types/react says latest version is 16.9.56? @captain-yossarian Commented Nov 20, 2020 at 9:23
  • Here is the link to source code: github.com/facebook/create-react-app/blob/… Please find verifyTypeScriptSetup in your node_modules (node_modules/react-scripts/scripts/utils/verifyTypeScriptSetup.js:239) and add there console.logs. It will be easier for you to debug Commented Nov 20, 2020 at 9:26
  • @captain-yossarian thank you, but sorry - I don't really get what I'm supposed to do. have you read my update in the question? I think the real error is revealed there Commented Nov 20, 2020 at 9:44

2 Answers 2

2

In my case @captain-yossarian had it right. Out of date types (@types/[email protected]) given the specified version of React ([email protected]). To fix:

npm install --upgrade @types/react@17
Sign up to request clarification or add additional context in comments.

Comments

0

I had the same problem, I deleted the tsconfig.json file then run yarn start, and it worked

Maybe a problem with create-react-app, I uninstalled it then reinstalled

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.