-
-
Notifications
You must be signed in to change notification settings - Fork 540
ERR_UNKNOWN_FILE_EXTENSION on Node v20.0.0 #1997
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
Comments
Edited by 11/18/2023 Use tsx replace ts-node? Or use ts-node@beta? more see https://github.com/privatenumber/tsx, #2077 |
I have the same issue. I tried using |
FYI Node 20 has made a breaking change:
|
+1 The issue also appears when using the specially dedicated ESM runner
|
Revert once TypeStrong/ts-node#1997 is resolved.
I went forward and downgraded my node version to |
i expirience the same issue on: # node --version
v18.16.0 EDIT: {
"start": "npm run clean && cross-env NODE_ENV=development NODE_OPTIONS=\"--loader=ts-node/esm --trace-warnings\" webpack serve --mode=development --config webpack.config.ts",
} worked out. example sourced from here: |
i expirience the same issue on: Node v20, |
I'd like to add quickly that on windows (at least), doing |
Yes, |
yeah, I recently upgraded to node 20 and started running with the So I'd recommend people stay off Node 20 until this is fixed if you don't want to have unexpected issues in your runtime. |
Node 20 changed experimental loaders. Fix running tests on node 20: * https://nodejs.org/en/blog/announcements/v20-release-announce * TypeStrong/ts-node#1997 * avajs/ava#2593 (comment)
@TopchetoEU tsx isn't a full replacement and doesn't have type checks, I'm a bit sceptical about their development model privatenumber/tsx#671 . Not even accepting contributions without a donation? |
I still think tsimp is a better replacement. |
lol this is gold. nodejs should stop recommending this. |
Why do you think so? I ran into multiple issues when using it: tapjs/tsimp#26 |
Oh, because it typechecks using tsc. That's why. |
good point, but at least it still works with ESM. |
tsimp is great in theory, but it's extremely buggy, and can produce non-obviously stale results from because of caching bugs. |
|
…#1977) This pull request resolves #1926 and prevents issues like it from happening in the future ## Rationale for this PR This PR changes the TypeScript execution package for use in scripts like `build:registry` from `ts-node` to `tsx`. This is because `ts-node` has many difficult quirks to work through (and is slow). In addition, it also has a difficult to understand error for newcomers that *is* reproducible. ### The ts-node error As shown in #1926, using `ts-node` (specifically in `build:registry`) results in this error: `Unknown file extension ".ts" for /ui/apps/www/scripts/build-registry.ts`. There are many issues in the `ts-node` repository documenting this problem: * TypeStrong/ts-node/issues/1062 * TypeStrong/ts-node/issues/2033 * TypeStrong/ts-node/issues/1997 Switching the typescript-in-node system to `tsx`, which uses esbuild under the hood, resolves this error. This PR shouldn't affect tests, representation, etc. and is merely a change of build tools. There is no urgent need to merge this. I accidentally deleted the head repository on #1937. That will not happen again.
I created a video summarizing how to run The |
Showcase of the problem: demo.mp4Here's all the loaders webpack supports
Webpack will check them in that order, mind you. So even if you have So I just did (I use Yarn package manager, if you use NPM translate these commands to their equivalent)
and then
No more configuration is needed (I don't have Another thing, if you do not have
|
This worked for me. By far the best solution I have come across. :) |
Well, if there's anything positive out of it, I hope it somehow incentivize people to try a better runtime like Deno or Bun. |
unfortunately, sometimes you don't get to pick your runtime, and you're forced to use NodeJS, despite your best wishes. |
I've switched to Deno, but there are still some rough edges, especially when it comes to testing:
Also, there's no interop with ESLint rules, and Deno's built-in linting is just not up to par with typescript-eslint. |
Deno is still buggy... Bun too... Those nasty bugs are so annoying to find out later in the production.. |
What has been working for me for a long time - and continues to work on node 22 - is the following:
Even though |
…#1977) This pull request resolves #1926 and prevents issues like it from happening in the future ## Rationale for this PR This PR changes the TypeScript execution package for use in scripts like `build:registry` from `ts-node` to `tsx`. This is because `ts-node` has many difficult quirks to work through (and is slow). In addition, it also has a difficult to understand error for newcomers that *is* reproducible. ### The ts-node error As shown in #1926, using `ts-node` (specifically in `build:registry`) results in this error: `Unknown file extension ".ts" for /ui/apps/www/scripts/build-registry.ts`. There are many issues in the `ts-node` repository documenting this problem: * TypeStrong/ts-node/issues/1062 * TypeStrong/ts-node/issues/2033 * TypeStrong/ts-node/issues/1997 Switching the typescript-in-node system to `tsx`, which uses esbuild under the hood, resolves this error. This PR shouldn't affect tests, representation, etc. and is merely a change of build tools. There is no urgent need to merge this. I accidentally deleted the head repository on #1937. That will not happen again.
…hadcn-ui#1977) This pull request resolves shadcn-ui#1926 and prevents issues like it from happening in the future ## Rationale for this PR This PR changes the TypeScript execution package for use in scripts like `build:registry` from `ts-node` to `tsx`. This is because `ts-node` has many difficult quirks to work through (and is slow). In addition, it also has a difficult to understand error for newcomers that *is* reproducible. ### The ts-node error As shown in shadcn-ui#1926, using `ts-node` (specifically in `build:registry`) results in this error: `Unknown file extension ".ts" for /ui/apps/www/scripts/build-registry.ts`. There are many issues in the `ts-node` repository documenting this problem: * TypeStrong/ts-node/issues/1062 * TypeStrong/ts-node/issues/2033 * TypeStrong/ts-node/issues/1997 Switching the typescript-in-node system to `tsx`, which uses esbuild under the hood, resolves this error. This PR shouldn't affect tests, representation, etc. and is merely a change of build tools. There is no urgent need to merge this. I accidentally deleted the head repository on shadcn-ui#1937. That will not happen again.
* Initial commit * Added multi-extension template based on paranext-core/extensions * Changed Paranext to Platform.Bible in various places, misc improvements * Added warning about editing update merge commit history * Ignored dist and release when formatting extension * Moved Special features description to this repo for lower frequency of merge conflicts * Moved a lot of git things to consts, made it easier to localize error messages, genericized license * Removed debug log * Fixed a couple things related to packaging extensions * Added 'shared with' statements to various style files and brought them in sync * Removed no-non-null-assertion as it is covered by no-type-assertion * remove papi-components, update packages, add platform-bible-utils as external * Fixed emotion package duplication * Reworked explanation for package aliases. Also removed note about splitting into its own repo as this problem will not be solved as long as the package used is local * npm updates (#7) - also add Volta node version * Add contributions folder for menus.json (#8) * Added copying settings and project settings contribution files * Fixed git problems with inconsistent error messages * Fixed swc bindings not found error * security update `@sillsdev/scripture` (#11) - also update other npm packages * Updated to node 20.11.1 LTS, replaced ts-node with tsx in the necessary places as a temporary fix for TypeStrong/ts-node#1997 * Fix cjs typo 'csj' * update all npm packages (#14) - except `typescript` and `@typescript-eslint/*` * Fixed dts self-import, used npm workspaces to clear up package issues * Updated package-lock.json * Added localized string contribution doc * Stop formatting extension package-lock.json * Added find and replace description to manual add extension explanation * Bump braces from 3.0.2 to 3.0.3 (#19) Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3. - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](micromatch/braces@3.0.2...3.0.3) --- updated-dependencies: - dependency-name: braces dependency-type: indirect ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * feat: added displayData.json file for localization * docs: updated README regarding displayData * update `@sillsdev/scripture` (#21) - enable full serialization that can now include verse ranges, sequences, and segments. * refactor: adjusted file structure for extension descriptions * update `@sillsdev/scripture` (#23) - fix .NET deserialization * Bump webpack from 5.91.0 to 5.94.0 (#25) Bumps [webpack](https://github.com/webpack/webpack) from 5.91.0 to 5.94.0. - [Release notes](https://github.com/webpack/webpack/releases) - [Commits](webpack/webpack@v5.91.0...v5.94.0) --- updated-dependencies: - dependency-name: webpack dependency-type: direct:development ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * update dependencies (#26) - `npm audit fix` - also ran `npx update-browserslist-db@latest` * Added tailwind to multi template * Changed readme template info to be hideable, made build script print helpful instructions if there are no extensions to build * Updated sass, moved printing instructions so it always runs * Moved LIBRARY_TYPE to fix circular dependency * update dependencies (#29) - also fix stylelint to work with tailwind @ directives * Reworded tailwind instructions because file has changed to .css * provide for type checking (#24) - Type checking doesn't happen at this level but within each contained extension. - use `noImplicitReturns` instead of `consistent-return` - improve types on error handling - also fix `micromatch` vulnerability using `npm audit fix` - also run `npx update-browserslist-db@latest` * improve linting (#31) - use the TS version of `class-methods-use-this` so we can ignore override methods. * add missing format check (#32) - let prettier format CSS & SCSS - also `npm audit fix` * ignore extension node modules in tailwind config to fix warning * Make ignore pattern more generic * update dependencies (#34) - `npm audit fix` - update minor and patch dependencies * Added link where it was missing, changed license to use copyright symbol * update dependencies (#36) - `npm audit fix` for esbuild * fix linting (#37) - remove jest (no longer used) - remove duplicated eslint rule * Changed main file target so it understands built-in modules except crypto are not available * Adjusted extension name guidance - lowerCamelCase and kebab-case * PT-2390: Minor wording improvements to README * PT-2390: Consolidated repetitive instructions. Added a reference to paranext-extension-template * Remove MUI * Update .eslintrc.cjs from the extension-template repo (#42) * PT-2390: Minor wording improvements to README. Capitalized Webpack when used as the proper name of the product. * Set up auto-release workflow (#44) * Added consistent return in bump-versions (#45) * Small fixes to auto-release process (#46) * PT-1886: Set up theme contributions, fixed raw file imports not working properly (#47) Set up theme contributions, fixed raw file imports not working properly * Squashed 'src/platform-lexical-tools/' content from commit 0aa7a68 git-subtree-dir: src/platform-lexical-tools git-subtree-split: 0aa7a6864a193d907b9da85c6ca342c6155504cd * Create platform lexical tools extension * add basic info to display data and description md --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: TJ Couch <[email protected]> Co-authored-by: tjcouch-sil <[email protected]> Co-authored-by: Jolie Rabideau <[email protected]> Co-authored-by: Ira Hopkinson <[email protected]> Co-authored-by: Matt Lyons <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Danny Hammer <[email protected]> Co-authored-by: Danny Hammer <[email protected]> Co-authored-by: Jolie Rabideau <[email protected]> Co-authored-by: tombogle <[email protected]> Co-authored-by: Rolf Heij <[email protected]> Co-authored-by: Rolf Heij <[email protected]>
package.json add "type": "module", |
…#1977) This pull request resolves #1926 and prevents issues like it from happening in the future ## Rationale for this PR This PR changes the TypeScript execution package for use in scripts like `build:registry` from `ts-node` to `tsx`. This is because `ts-node` has many difficult quirks to work through (and is slow). In addition, it also has a difficult to understand error for newcomers that *is* reproducible. ### The ts-node error As shown in #1926, using `ts-node` (specifically in `build:registry`) results in this error: `Unknown file extension ".ts" for /ui/apps/www/scripts/build-registry.ts`. There are many issues in the `ts-node` repository documenting this problem: * TypeStrong/ts-node/issues/1062 * TypeStrong/ts-node/issues/2033 * TypeStrong/ts-node/issues/1997 Switching the typescript-in-node system to `tsx`, which uses esbuild under the hood, resolves this error. This PR shouldn't affect tests, representation, etc. and is merely a change of build tools. There is no urgent need to merge this. I accidentally deleted the head repository on #1937. That will not happen again.
Uh oh!
There was an error while loading. Please reload this page.
Search Terms
Node, ERR_UNKNOWN_FILE_EXTENSION
Expected Behavior
Fix it
Actual Behavior
see Minimal reproduction
Steps to reproduce the problem
see Minimal reproduction
Minimal reproduction
Specifications
ts-node version: 10.9.1
node version: 20.0.0
TypeScript version: 5.0
tsconfig.json:
package.json:
Operating system and version: macOS 13.3.1
The text was updated successfully, but these errors were encountered: