-
Notifications
You must be signed in to change notification settings - Fork 30.1k
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
tools: strange linting issue #19250
Comments
It seems the issue is not in a drive letter, but in case of any letters in a path within case insensitive OS like Windows. Compare (the first directory is titlecased): j:\temp\_git\node-fork>node j:/temp/_git/node-fork/tools/node_modules/eslint/bin/eslint.js .eslintrc.js
[no errors]
j:\temp\_git\node-fork>node j:/Temp/_git/node-fork/tools/node_modules/eslint/bin/eslint.js .eslintrc.js
j:\temp\_git\node-fork\.eslintrc.js
1:1 error Definition for rule 'node-core/no-unescaped-regexp-dot' was not found node-core/no-unescaped-regexp-dot
✖ 1 problem (1 error, 0 warnings) |
Probably an issue in eslint. |
Maybe. I was trying to debug, but I cannot catch the cause, I am not so aware how plugin rules are integrated. Drive letter miscasing is more often issue than any other miscasing in a path. For example, there is a Windows way to make it possible to call ftype JSFile="C:\Program Files\nodejs\node.exe" "%1" %*
assoc .js=JSFile So, if this is set and a user runs: tools\node_modules\eslint\bin\eslint .eslintrc.js it will be expanded by a shell into: "C:\Program Files\nodejs\node.exe" "J:/temp/_git/node-fork/tools/node_modules/eslint/bin/eslint.js" .eslintrc.js — with uppercased drive letter. This is how I have stumbled upon this issue. |
More info to consider re drive letter case:
test.js: 'use strict';
console.log(__filename);
console.log(__dirname);
console.log(process.argv);
console.log(process.cwd()); cmd.exe: e:\DOC\prg\js\node\-test> node e:\DOC\prg\js\node\-test\test.js
e:\DOC\prg\js\node\-test\test.js
e:\DOC\prg\js\node\-test
[ 'C:\\Program Files\\nodejs\\node.exe',
'e:\\DOC\\prg\\js\\node\\-test\\test.js' ]
e:\DOC\prg\js\node\-test
e:\DOC\prg\js\node\-test> node E:\DOC\prg\js\node\-test\test.js
E:\DOC\prg\js\node\-test\test.js
E:\DOC\prg\js\node\-test
[ 'C:\\Program Files\\nodejs\\node.exe',
'E:\\DOC\\prg\\js\\node\\-test\\test.js' ]
e:\DOC\prg\js\node\-test Git bash: vmb@vmb-nb MINGW64 /e/DOC/prg/js/node/-test
$ node e:\\DOC\\prg\\js\\node\\-test\\test.js
e:\DOC\prg\js\node\-test\test.js
e:\DOC\prg\js\node\-test
[ 'C:\\Program Files\\nodejs\\node.exe',
'e:\\DOC\\prg\\js\\node\\-test\\test.js' ]
E:\DOC\prg\js\node\-test
vmb@vmb-nb MINGW64 /e/DOC/prg/js/node/-test
$ node E:\\DOC\\prg\\js\\node\\-test\\test.js
E:\DOC\prg\js\node\-test\test.js
E:\DOC\prg\js\node\-test
[ 'C:\\Program Files\\nodejs\\node.exe',
'E:\\DOC\\prg\\js\\node\\-test\\test.js' ]
E:\DOC\prg\js\node\-test It seems ESLint or plugin try to compare these items case-sensitively somewhere. |
Why it is so difficult to debug: #19273 Breakpoints in dependent files set in this call: node --inspect-brk j:/temp/_git/node-fork/tools/node_modules/eslint/bin/eslint.js .eslintrc.js are not activated at all, Breakpoints in dependent files set in this call: node --inspect-brk J:/temp/_git/node-fork/tools/node_modules/eslint/bin/eslint.js .eslintrc.js are skipped if the code is not accessed due to a bug. |
It's not ESLint, it's us) This is what happens in two mentioned calls:
|
I have no idea what's going on here and I don't have a Windows machine so it might be best for someone else to tackle this :) |
Additional refs: https://nodejs.org/api/modules.html#modules_module_caching_caveats #17611 (the references to other issues and the discussion in comments) |
I usually don't like closing |
The case of drive letter (i.e.
j:
vsJ:
) causes different behavior. Moreover, this difference is opposite in various shells.cmd.exe
:Git Bash:
cc @nodejs/linting @nodejs/platform-windows
The text was updated successfully, but these errors were encountered: