@@ -3051,13 +3051,18 @@ namespace ts {
3051
3051
else {
3052
3052
const tsExtension = tryExtractTSExtension(moduleReference);
3053
3053
if (tsExtension) {
3054
- const diag = Diagnostics.An_import_path_cannot_end_with_a_0_extension_Consider_importing_1_instead;
3055
- let rightPath = removeExtension(moduleReference, tsExtension);
3056
- if (compilerOptions.emitExtension) {
3057
- // e.g.: Consider importing '{1}.mjs' instead.
3058
- rightPath += compilerOptions.emitExtension;
3054
+ if (compilerOptions.emitExtension === tsExtension) {
3055
+ error(errorNode, moduleNotFoundError, moduleReference);
3056
+ }
3057
+ else {
3058
+ const diag = Diagnostics.An_import_path_cannot_end_with_a_0_extension_Consider_importing_1_instead;
3059
+ let rightPath = removeExtension(moduleReference, tsExtension);
3060
+ if (compilerOptions.emitExtension) {
3061
+ // e.g.: Consider importing '{1}.mjs' instead.
3062
+ rightPath += compilerOptions.emitExtension;
3063
+ }
3064
+ error(errorNode, diag, tsExtension, rightPath);
3059
3065
}
3060
- error(errorNode, diag, tsExtension, rightPath);
3061
3066
}
3062
3067
else if (!compilerOptions.resolveJsonModule &&
3063
3068
fileExtensionIs(moduleReference, Extension.Json) &&
@@ -33664,10 +33669,12 @@ namespace ts {
33664
33669
return false;
33665
33670
}
33666
33671
}
33667
- else if (compilerOptions.noImplicitExtensionName) {
33672
+ // Skip noImplicitExtensionName check for files in node_modules
33673
+ else if (compilerOptions.noImplicitExtensionName && !getSourceFileOfNode(node).fileName.includes("node_modules")) {
33668
33674
const extensionLess = removeFileExtension(moduleName.text, compilerOptions);
33669
33675
if (extensionLess === moduleName.text) {
33670
33676
error(node, Diagnostics.Import_with_an_implicit_extension_name_is_not_allowed_Try_to_import_from_0_1_instead, extensionLess, compilerOptions.emitExtension || ".js");
33677
+ return false;
33671
33678
}
33672
33679
}
33673
33680
}
0 commit comments