From dfb5cbd3738758922ff685847aa1f6f7c89e409c Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Wed, 25 Jul 2018 16:20:37 -0700 Subject: [PATCH] When json module is not found, include enabling --resolveJsonModule might help. Fixes #25722 --- src/compiler/checker.ts | 6 ++++++ src/compiler/diagnosticMessages.json | 4 ++++ .../requireOfJsonFileWithoutResolveJsonModule.errors.txt | 8 ++++---- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index ecb8a3a928e..b704cd3b074 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2220,6 +2220,12 @@ namespace ts { const diag = Diagnostics.An_import_path_cannot_end_with_a_0_extension_Consider_importing_1_instead; error(errorNode, diag, tsExtension, removeExtension(moduleReference, tsExtension)); } + else if (!compilerOptions.resolveJsonModule && + fileExtensionIs(moduleReference, Extension.Json) && + getEmitModuleResolutionKind(compilerOptions) === ModuleResolutionKind.NodeJs && + getEmitModuleKind(compilerOptions) === ModuleKind.CommonJS) { + error(errorNode, Diagnostics.Cannot_find_module_0_Consider_using_resolveJsonModule_to_import_module_with_json_extension, moduleReference); + } else { error(errorNode, moduleNotFoundError, moduleReference); } diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index a9118945b05..8927cbd33b1 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -2421,6 +2421,10 @@ "category": "Error", "code": 2730 }, + "Cannot find module '{0}'. Consider using '--resolveJsonModule' to import module with '.json' extension": { + "category": "Error", + "code": 2731 + }, "Import declaration '{0}' is using private name '{1}'.": { "category": "Error", diff --git a/tests/baselines/reference/requireOfJsonFileWithoutResolveJsonModule.errors.txt b/tests/baselines/reference/requireOfJsonFileWithoutResolveJsonModule.errors.txt index 7c720cd70ac..4b2e568dd9a 100644 --- a/tests/baselines/reference/requireOfJsonFileWithoutResolveJsonModule.errors.txt +++ b/tests/baselines/reference/requireOfJsonFileWithoutResolveJsonModule.errors.txt @@ -1,15 +1,15 @@ -tests/cases/compiler/file1.ts(1,21): error TS2307: Cannot find module './b.json'. -tests/cases/compiler/file1.ts(3,21): error TS2307: Cannot find module './b.json'. +tests/cases/compiler/file1.ts(1,21): error TS2731: Cannot find module './b.json'. Consider using '--resolveJsonModule' to import module with '.json' extension +tests/cases/compiler/file1.ts(3,21): error TS2731: Cannot find module './b.json'. Consider using '--resolveJsonModule' to import module with '.json' extension ==== tests/cases/compiler/file1.ts (2 errors) ==== import b1 = require('./b.json'); // error ~~~~~~~~~~ -!!! error TS2307: Cannot find module './b.json'. +!!! error TS2731: Cannot find module './b.json'. Consider using '--resolveJsonModule' to import module with '.json' extension let x = b1.a; import b2 = require('./b.json'); // error ~~~~~~~~~~ -!!! error TS2307: Cannot find module './b.json'. +!!! error TS2731: Cannot find module './b.json'. Consider using '--resolveJsonModule' to import module with '.json' extension if (x) { let b = b2.b; x = (b1.b === b);