-
Notifications
You must be signed in to change notification settings - Fork 12.5k
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
Suggestion: case-sensitive imports #21736
Comments
|
Oh interesting. I misunderstood what that meant. It doesn't stop you from creating a new file and importing it in a single place with the wrong case though. |
There actually is an option that can be given to the tsservice API ( |
@Kovensky there are two parts involved, the comparisons which is managed by |
I should add the reason why we did not do that is realPath has negative perf implications. |
I see. Well it sounds like you guys know what you're doing 👍 It looks like a decent performance hit everywhere I've checked. There's a webpack plugin but it makes several calls to the filesystem: https://github.com/Urthen/case-sensitive-paths-webpack-plugin/blob/master/index.js I'm not sure how the TypeScript internals work, but it seems like the performance hit wouldn't be too bad if it were a compile-time check on the import statements rather than actually forcing an error on importing the file. At the very least, we can document it and improve it over time. |
Can I upvote this issue? I spent hours trying to figure out why my TeamCity build was failing only to realize that the project had some imports that were the wrong case! Quite an unexpected gotcha as I thought OSX would not import the file if it was the wrong case. |
Just to echo the others here, we were able to run our codebase locally on our macs but it fell over on Heroku because of the wrong casing for the filename, which wasn't obvious and continues to be something we have to keep a keen eye out for (aka old school linting). |
Similar experience here with a build succeeding on Windows 10 and failing on RHEL 7.6 with a "Cannot find module" error. Took a while to figure out it was a case error on the import. I also tried using the forceConsistentCasingInFileNames setting in my tsconfig.json but it did not catch this. |
Same here. We have similar issue when using decorators where Reflect.js is case sensitive. Our Type-Graphql keeps complaining duplicated |
Make it opt-in with a flag like |
Had this issue a lot lately since we build locally which works and then attempt to build in docker which fails. A flag or something similar that would catch these scenarios would be ideal 👍Is the actual issue here that there is a bug with |
Did some research here while working on the new Handbook and it looks like the Accepting PRs to have this flag result in checking the disk casing against the user-specified casing. Please test the living daylights out of your change as this stuff tends to be really hard to get right. |
Any news on this? |
@demian85 can you open a new issue describing that in more detail? Thanks! |
Is there any news about this? |
I have also been bitten by this very silly behavior. |
I was bitten by this very time consuming bug :( |
I spent dozens of minutes to find why my Mac all goes well but failed in linux jenkins unit test. |
I know this doesn't solve the problem, but wanted to share my opinion. |
Still no updates yet? Same issue here, damn, we took a long time to figure it out. |
I'd like to work on this. |
I think the problem is importing external modules with different casing and not just internal references to specific files. |
@Kingwl its external module imports (for example |
Oh. Well Okay. Got the point. |
kebab-case ftw. I had low priority PR up for over 2 months -- the issue was the build passed locally (OSX) but failed within the container. We of course took a look at, scratched our heads, and moved on to more important things. This evening I finally spent some time on it .. just wow is all I can say. Unix kids are laughing right now. |
// should be 'koa-bodyparser'
import bodyParser from 'koa-bodyParser' works well on my Mac but failed in my linux CI/CD test. |
I have a strange issue that i
Why would my username on mac os be lowercased on one path and not in another? |
TypeScript Version: 2.7.0-dev.201xxxxx
My mac does not have case sensitive imports. That is you can import the file
x.js
as./X.js
and everything will work. However, our servers run on linux (like most) and I got a runtime exception that took down the whole server because linux imports are case sensitive.I think this would be an awesome addition to Typescript to prevent fatal mistakes that are hard to catch like this one.
Related Issues:
#14460
The text was updated successfully, but these errors were encountered: