rescript-lang / rescript-lang/rescript

Provided `jsx.module` in root `rescript.json` does not work

Open
#8,468 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
OCaml
Stars
7.5k
Forks
485
Avg merge
1d 2h
Merged PRs (30d)
55

Description

In monorepo, I define this in the root rescript.json:

    "jsx": {
        "version": 4,
        "module": "JSXExt"
    }

It works for local packages, but it fails to compile with the following errors from @rescript/react dependency:

Log
❯ Building ReScript packages: $ pnpm rescript build [@ Draftist]
[1/3] 🧹 Cleaned previous build due to compiler update
[1/3] 🧹 Cleaned 0/0 in 0.43s
[2/3] 🧱 Parsed 873 source files in 5.05s
[3/3] ❌ Compiled 156 modules in 0.73s

  We've found a bug for you!
  /Users/Alex/Dev/Draftist/node_modules/@rescript/react/src/RescriptReactErrorBoundary.res:40:1-44:36

  38 │ `)
  39 │
  40 │ @react.component @val
  41 │ external make: (
  42 │   ~children: React.element,
  43 │   ~fallback: params<'error> => React.element,
  44 │ ) => React.element = "ErrorBoundary"
  45 │

  The module or file JSXExt can't be found.
  - If it's a third-party dependency:
    - Did you add it to the "dependencies" or "dev-dependencies" in rescript.json?
  - Did you include the file's directory to the "sources" in rescript.json?



  We've found a bug for you!
  /Users/Alex/Dev/Draftist/node_modules/@rescript/react/src/RescriptReactErrorBoundary.resi:13:1-14:97

  11 │ }
  12 │
  13 │ @react.component
  14 │ let make: (~children: React.element, ~fallback: params<'error> => React
     │ .element) => React.element
  15 │

  The module or file JSXExt can't be found.
  - If it's a third-party dependency:
    - Did you add it to the "dependencies" or "dev-dependencies" in rescript.json?
  - Did you include the file's directory to the "sources" in rescript.json?

Setting jsx config in package's rescript.json does not work - compiler ignores it.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure with the root and package rescript.json files, pnpm rescript build, and the @rescript/react files RescriptReactErrorBoundary.res and .resi. Trace how jsx.module is read and propagated in the compiler; done means the root setting works for dependency sources and package-level configuration is handled consistently without the JSXExt errors.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
compilers
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.