Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NPM modules incorrectly interpreted as CJS #680

Open
double-thinker opened this issue Aug 15, 2024 · 1 comment
Open

NPM modules incorrectly interpreted as CJS #680

double-thinker opened this issue Aug 15, 2024 · 1 comment

Comments

@double-thinker
Copy link

As you can see here or here the package.json could mislead Node.js into load index.js as ESM which triggers the following error:

.../node_modules/.pnpm/@[email protected]_@[email protected]_@[email protected]_@[email protected]/node_modules/@uiw/codemirror-theme-solarized/esm/index.js:1
export * from './dark';
^^^^^^

SyntaxError: Unexpected token 'export'
    at internalCompileFunction (node:internal/vm:128:18)
    at wrapSafe (node:internal/modules/cjs/loader:1279:20)
    at Module._compile (node:internal/modules/cjs/loader:1331:27)
    at Module._extensions..js (node:internal/modules/cjs/loader:1426:10)
    at Module.load (node:internal/modules/cjs/loader:1205:32)
    at Module._load (node:internal/modules/cjs/loader:1021:12)
    at cjsLoader (node:internal/modules/esm/translators:366:17)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:315:7)
    at ModuleJob.run (node:internal/modules/esm/module_job:222:25)

I cannot provide a reproduction but it happens in Vite when rendering SSR (I know this is not expected). Seems like affects other packages. This snippet also fails in SSR:

import CodeMirror, { keymap } from '@uiw/react-codemirror'

// ...
<CodeMirror>

React fails to render it because it is a not expected object (we are getting the CJS module instead of the render function. As a workaroung you can use <CodeMirror.default> and patch the package.json for the packages you need.

diff --git a/package.json b/package.json
index fe8aadc867807afc82b0c3da430ccaf34c76eb0d..7ebea0e2532cf44e1e6a85374cc68bb135e70f10 100644
--- a/package.json
+++ b/package.json
@@ -7,22 +7,22 @@
   "author": "kenny wong <[email protected]>",
   "license": "MIT",
   "main": "./cjs/index.js",
-  "module": "./esm/index.js",
+  "module": "./src/index.ts",
   "exports": {
     "./README.md": "./README.md",
     ".": {
-      "import": "./esm/index.js",
       "types": "./cjs/index.d.ts",
+      "import": "./src/index.ts",      
       "require": "./cjs/index.js"
     },
     "./light": {
-      "import": "./esm/light.js",
       "types": "./cjs/light.d.ts",
+      "import": "./src/light.ts",      
       "require": "./cjs/light.js"
     },
     "./dark": {
-      "import": "./esm/dark.js",
       "types": "./cjs/dark.d.ts",
+      "import": "./src/dark.ts",      
       "require": "./cjs/dark.js"
     }
   },
@aspiers
Copy link
Contributor

aspiers commented Dec 16, 2024

As mentioned in #613 (comment), I have found this to be a cause of #613 (and probably #216 too in some cases).

The fix in #692 of adding exports to package.json needs to be applied to other package.json files, not just the ones done in that PR.

aspiers added a commit to aspiers/react-codemirror that referenced this issue Dec 16, 2024
github-actions bot pushed a commit that referenced this issue Dec 16, 2024
jaywcjlove added a commit that referenced this issue Dec 16, 2024
github-actions bot pushed a commit that referenced this issue Dec 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants