Skip to content

Commit 08283f5

Browse files
committed
feat: supress error 2961 when emitExtension is .ts
1 parent 867245d commit 08283f5

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

src/compiler/checker.ts

+14-7
Original file line numberDiff line numberDiff line change
@@ -2720,13 +2720,18 @@ namespace ts {
27202720
else {
27212721
const tsExtension = tryExtractTSExtension(moduleReference);
27222722
if (tsExtension) {
2723-
const diag = Diagnostics.An_import_path_cannot_end_with_a_0_extension_Consider_importing_1_instead;
2724-
let rightPath = removeExtension(moduleReference, tsExtension);
2725-
if (compilerOptions.emitExtension) {
2726-
// e.g.: Consider importing '{1}.mjs' instead.
2727-
rightPath += compilerOptions.emitExtension;
2723+
if (compilerOptions.emitExtension === tsExtension) {
2724+
error(errorNode, moduleNotFoundError, moduleReference);
2725+
}
2726+
else {
2727+
const diag = Diagnostics.An_import_path_cannot_end_with_a_0_extension_Consider_importing_1_instead;
2728+
let rightPath = removeExtension(moduleReference, tsExtension);
2729+
if (compilerOptions.emitExtension) {
2730+
// e.g.: Consider importing '{1}.mjs' instead.
2731+
rightPath += compilerOptions.emitExtension;
2732+
}
2733+
error(errorNode, diag, tsExtension, rightPath);
27282734
}
2729-
error(errorNode, diag, tsExtension, rightPath);
27302735
}
27312736
else if (!compilerOptions.resolveJsonModule &&
27322737
fileExtensionIs(moduleReference, Extension.Json) &&
@@ -32567,10 +32572,12 @@ namespace ts {
3256732572
return false;
3256832573
}
3256932574
}
32570-
else if (compilerOptions.noImplicitExtensionName) {
32575+
// Skip noImplicitExtensionName check for files in node_modules
32576+
else if (compilerOptions.noImplicitExtensionName && !getSourceFileOfNode(node).fileName.includes("node_modules")) {
3257132577
const extensionLess = removeFileExtension(moduleName.text, compilerOptions);
3257232578
if (extensionLess === moduleName.text) {
3257332579
error(node, Diagnostics.Import_with_an_implicit_extension_name_is_not_allowed_Try_to_import_from_0_1_instead, extensionLess, compilerOptions.emitExtension || ".js");
32580+
return false;
3257432581
}
3257532582
}
3257632583
}

0 commit comments

Comments
 (0)