Skip to content
New issue

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

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

Already on GitHub? # to your account

TypeError: Unknown file extension ".ts" #2810

Open
4 tasks done
UchihaYuki opened this issue Jun 20, 2024 · 6 comments
Open
4 tasks done

TypeError: Unknown file extension ".ts" #2810

UchihaYuki opened this issue Jun 20, 2024 · 6 comments

Comments

@UchihaYuki
Copy link

Before you open this issue, please complete the following tasks:

  • use the search bar at the top of the page to search this repository for similar issues or discussions that have already been opened.
  • if you are looking for help from the gulp team or community, open a discussion.
  • if you think there is a problem with the plugin you're using, open a discussion.
  • if you think there is a bug in our code, open this issue.

What were you expecting to happen?

gulpfile.ts should be able to import packages written in ESM, like del@7

What actually happened?

[19:28:40] Loaded external module: ts-node/register
TypeError: Unknown file extension ".ts" for C:\Users\yuki\Desktop\test-gulp\gulpfile.ts

Please give us a sample of your gulpfile

https://github.com/UchihaYuki/gulp-typescript-bug

Terminal output / screenshots

>gulp clean
[19:39:16] Loaded external module: ts-node/register
TypeError: Unknown file extension ".ts" for C:\Users\yuki\Desktop\test-gulp\gulpfile.ts
    at Object.getFileProtocolModuleFormat [as file:] (node:internal/modules/esm/get_format:160:9)
    at defaultGetFormat (node:internal/modules/esm/get_format:203:36)
    at defaultLoad (node:internal/modules/esm/load:143:22)
    at async ModuleLoader.load (node:internal/modules/esm/loader:396:7)
    at async ModuleLoader.moduleProvider (node:internal/modules/esm/loader:278:45)
    at async link (node:internal/modules/esm/module_job:78:21) {
  code: 'ERR_UNKNOWN_FILE_EXTENSION'
}

Please provide the following information:

  • OS & version [e.g. MacOS Catalina 10.15.4]: Windows 10
  • node version (run node -v): v20.14.0
  • npm version (run npm -v): 10.7.0
  • gulp version (run gulp -v): 5.0.0

Additional information

@UchihaYuki
Copy link
Author

It seems tsx will work, but I don't know how to replace ts-node with tsx. Haven't found any doc online.

@UchihaYuki
Copy link
Author

@UchihaYuki
Copy link
Author

This seems a pretty complicated issue around running typescript on node.
I'm going to transpile gulpfile.ts to js first as a workaround now.

@phated
Copy link
Member

phated commented Jun 20, 2024

The esm loader stuff was immature while we developed the underpinnings to gulp v5, but we plan to explore some different techniques for gulp v6 (which drops older node support).

Currently, transpiling is likely your best option to use a different language+ESM (like you mentioned).

@UchihaYuki
Copy link
Author

Is it possible to tell gulp to run npx tsc -p tsconfig.gulp.json before it locate the local gulpfile.js and do its work?
I have to do something like this npx tsc -p tsconfig.gulp.json && gulp build currently, which is pretty tedious.

@phated
Copy link
Member

phated commented Jun 25, 2024

You might be able to do something with --preload and then embed the extra flags in a .gulp.js config file, but I'm not sure what that would look like.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants