vite
vite copied to clipboard
Importing TypeScript files with `?url` suffix result in the file not being transpiled
Describe the bug
I'm using the ?url
suffix to import a TypeScript file to use it in an AudioWorklet.
import workletUrl from './audio.worklet.ts?url';
const audioContext = new AudioContext();
audioContext.audioWorklet.addModule(workletUrl);
The problem is that Vite is not transpiling my TS file into a JS one, so the worklet fails because of it.
I think Vite should either transpile the files that it knows how to transpile, and return as URL the transpiled file, or a new option should be added to tell Vite to transpile it (e.g. ?url&transpile
)
Reproduction
https://github.com/FezVrasta/vite-ts-url-import
System Info
System:
OS: macOS 12.5.1
CPU: (10) arm64 Apple M1 Max
Memory: 2.36 GB / 32.00 GB
Shell: 5.8.1 - /bin/zsh
Binaries:
Node: 16.16.0 - ~/.nvm/versions/node/v16.16.0/bin/node
Yarn: 1.22.19 - ~/.nvm/versions/node/v16.16.0/bin/yarn
npm: 8.11.0 - ~/.nvm/versions/node/v16.16.0/bin/npm
Watchman: 2022.05.16.00 - /opt/homebrew/bin/watchman
Browsers:
Brave Browser: 104.1.42.97
Chrome: 105.0.5195.52
Firefox: 103.0.1
Safari: 15.6.1
npmPackages:
vite: ^3.0.7 => 3.0.9
Used Package Manager
npm
Logs
No response
Validations
- [X] Follow our Code of Conduct
- [X] Read the Contributing Guidelines.
- [X] Read the docs.
- [X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
- [X] Make sure this is a Vite issue and not a framework-specific issue. For example, if it's a Vue SFC related bug, it should likely be reported to vuejs/core instead.
- [X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
- [X] The provided reproduction is a minimal reproducible example of the bug.
Looks like a bug that it should be transpiled by default, you can workaround it by using new URL('./path/to/file.ts', import.meta.url)
. Though for AudioWorklet, even if ?url
works you might hit https://github.com/vitejs/vite/issues/9606
I think this is related to https://github.com/vitejs/vite/issues/6757, https://github.com/vitejs/vite/issues/2522#issuecomment-1111024311.
Looks like a bug that it should be transpiled by default, you can workaround it by using
new URL('./path/to/file.ts', import.meta.url)
. Though for AudioWorklet, even if?url
works you might hit #9606
Thanks for the reply, using new URL
doesn't seem to work, the resulting URL returns 404.
I think this is related to #6757, #2522 (comment).
The second looks definitely related, I'm not sure about the first, it seems to be a different problem?
There is definitely a regression somewhere. Using import.meta.url
results in importing my .ts
files as video/m2ts
instead of TypeScript.
Duplicate of #6979