Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/compiler/diagnosticMessages.json
Original file line number Diff line number Diff line change
Expand Up @@ -4661,7 +4661,7 @@
"category": "Error",
"code": 5094
},
"Option '{0}' can only be used when 'module' is set to 'preserve' or to 'es2015' or later.": {
"Option '{0}' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later.": {
"category": "Error",
"code": 5095
},
Expand Down
4 changes: 2 additions & 2 deletions src/compiler/program.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4371,8 +4371,8 @@ export function createProgram(_rootNamesOrOptions: readonly string[] | CreatePro
createDiagnosticForOptionName(Diagnostics.Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler, "customConditions");
}

if (moduleResolution === ModuleResolutionKind.Bundler && !emitModuleKindIsNonNodeESM(moduleKind) && moduleKind !== ModuleKind.Preserve) {
createOptionValueDiagnostic("moduleResolution", Diagnostics.Option_0_can_only_be_used_when_module_is_set_to_preserve_or_to_es2015_or_later, "bundler");
if (moduleResolution === ModuleResolutionKind.Bundler && !emitModuleKindIsNonNodeESM(moduleKind) && moduleKind !== ModuleKind.Preserve && moduleKind !== ModuleKind.CommonJS) {
createOptionValueDiagnostic("moduleResolution", Diagnostics.Option_0_can_only_be_used_when_module_is_set_to_preserve_commonjs_or_es2015_or_later, "bundler");
}

if (
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later.
/c.ts(1,16): error TS2307: Cannot find module './thisfiledoesnotexist.ts' or its corresponding type declarations.


!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later.
==== /ts.ts (0 errors) ====
export {};

Expand Down
35 changes: 35 additions & 0 deletions tests/baselines/reference/bundlerCommonJS.errors.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/real-imports.mts(1,19): error TS2307: Cannot find module 'pkg' or its corresponding type declarations.


==== /node_modules/pkg/package.json (0 errors) ====
{
"name": "pkg",
"version": "1.0.0",
"type": "commonjs",
"exports": {
"require": "./index.js"
}
}

==== /node_modules/pkg/index.d.ts (0 errors) ====
export declare const x: number;

==== /package.json (0 errors) ====
{
"": "type module is ignored in --module commonjs",
"type": "module"
}

==== /requires.ts (0 errors) ====
import pkg = require("pkg");
pkg.x;

==== /imports.ts (0 errors) ====
import { x } from "pkg";
x;

==== /real-imports.mts (1 errors) ====
import { x } from "pkg"; // Error
~~~~~
!!! error TS2307: Cannot find module 'pkg' or its corresponding type declarations.

45 changes: 45 additions & 0 deletions tests/baselines/reference/bundlerCommonJS.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
//// [tests/cases/conformance/moduleResolution/bundler/bundlerCommonJS.ts] ////

//// [package.json]
{
"name": "pkg",
"version": "1.0.0",
"type": "commonjs",
"exports": {
"require": "./index.js"
}
}

//// [index.d.ts]
export declare const x: number;

//// [package.json]
{
"": "type module is ignored in --module commonjs",
"type": "module"
}

//// [requires.ts]
import pkg = require("pkg");
pkg.x;

//// [imports.ts]
import { x } from "pkg";
x;

//// [real-imports.mts]
import { x } from "pkg"; // Error


//// [requires.js]
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var pkg = require("pkg");
pkg.x;
//// [imports.js]
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var pkg_1 = require("pkg");
pkg_1.x;
//// [real-imports.mjs]
export {};
42 changes: 42 additions & 0 deletions tests/baselines/reference/bundlerCommonJS.trace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
[
"Found 'package.json' at '/node_modules/pkg/package.json'.",
"======== Resolving module 'pkg' from '/requires.ts'. ========",
"Explicitly specified module resolution kind: 'Bundler'.",
"Resolving in CJS mode with conditions 'require', 'types'.",
"Found 'package.json' at '/package.json'.",
"Loading module 'pkg' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
"File '/node_modules/pkg/package.json' exists according to earlier cached lookups.",
"Entering conditional exports.",
"Matched 'exports' condition 'require'.",
"Using 'exports' subpath '.' with target './index.js'.",
"File name '/node_modules/pkg/index.js' has a '.js' extension - stripping it.",
"File '/node_modules/pkg/index.ts' does not exist.",
"File '/node_modules/pkg/index.tsx' does not exist.",
"File '/node_modules/pkg/index.d.ts' exists - use it as a name resolution result.",
"'package.json' does not have a 'peerDependencies' field.",
"Resolved under condition 'require'.",
"Exiting conditional exports.",
"Resolving real path for '/node_modules/pkg/index.d.ts', result '/node_modules/pkg/index.d.ts'.",
"======== Module name 'pkg' was successfully resolved to '/node_modules/pkg/index.d.ts' with Package ID 'pkg/index.d.ts@1.0.0'. ========",
"======== Resolving module 'pkg' from '/imports.ts'. ========",
"Resolution for module 'pkg' was found in cache from location '/'.",
"======== Module name 'pkg' was successfully resolved to '/node_modules/pkg/index.d.ts' with Package ID 'pkg/index.d.ts@1.0.0'. ========",
"======== Resolving module 'pkg' from '/real-imports.mts'. ========",
"Explicitly specified module resolution kind: 'Bundler'.",
"Resolving in CJS mode with conditions 'import', 'types'.",
"File '/package.json' exists according to earlier cached lookups.",
"Loading module 'pkg' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
"File '/node_modules/pkg/package.json' exists according to earlier cached lookups.",
"Entering conditional exports.",
"Saw non-matching condition 'require'.",
"Exiting conditional exports.",
"Directory '/node_modules/@types' does not exist, skipping all lookups in it.",
"Searching all ancestor node_modules directories for fallback extensions: JavaScript, JSON.",
"File '/node_modules/pkg/package.json' exists according to earlier cached lookups.",
"Entering conditional exports.",
"Saw non-matching condition 'require'.",
"Exiting conditional exports.",
"======== Module name 'pkg' was not resolved. ========"
]
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later.
error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later.
error TS5109: Option 'moduleResolution' must be set to 'Node16' (or left unspecified) when option 'module' is set to 'Node18'.


!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later.
!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later.
!!! error TS5109: Option 'moduleResolution' must be set to 'Node16' (or left unspecified) when option 'module' is set to 'Node18'.
==== /app/test.ts (0 errors) ====
import { test } from '../lib';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later.
error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later.
error TS5109: Option 'moduleResolution' must be set to 'Node16' (or left unspecified) when option 'module' is set to 'Node20'.


!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later.
!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later.
!!! error TS5109: Option 'moduleResolution' must be set to 'Node16' (or left unspecified) when option 'module' is set to 'Node20'.
==== /app/test.ts (0 errors) ====
import { test } from '../lib';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later.
error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later.
error TS5109: Option 'moduleResolution' must be set to 'NodeNext' (or left unspecified) when option 'module' is set to 'NodeNext'.


!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later.
!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later.
!!! error TS5109: Option 'moduleResolution' must be set to 'NodeNext' (or left unspecified) when option 'module' is set to 'NodeNext'.
==== /app/test.ts (0 errors) ====
import { test } from '../lib';
Expand Down
11 changes: 7 additions & 4 deletions tests/baselines/reference/bundlerOptionsCompat.errors.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
/tsconfig.json(4,25): error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later.
/tsconfig.json(4,25): error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later.
/tsconfig.json(4,25): error TS5109: Option 'moduleResolution' must be set to 'NodeNext' (or left unspecified) when option 'module' is set to 'NodeNext'.


==== /tsconfig.json (1 errors) ====
==== /tsconfig.json (2 errors) ====
{
"compilerOptions": {
"module": "commonjs",
"module": "nodenext",
"moduleResolution": "bundler",
~~~~~~~~~
!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later.
!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later.
~~~~~~~~~
!!! error TS5109: Option 'moduleResolution' must be set to 'NodeNext' (or left unspecified) when option 'module' is set to 'NodeNext'.
"noEmit": true
}
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later.
error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later.


!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later.
!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later.
==== /a.ts (0 errors) ====
export const _ = 0;

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
error TS5071: Option '--resolveJsonModule' cannot be specified when 'module' is set to 'none', 'system', or 'umd'.
error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later.
error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later.


!!! error TS5071: Option '--resolveJsonModule' cannot be specified when 'module' is set to 'none', 'system', or 'umd'.
!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later.
!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later.
==== /a.ts (0 errors) ====
export const _ = 0;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
error TS5071: Option '--resolveJsonModule' cannot be specified when 'module' is set to 'none', 'system', or 'umd'.
error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later.
error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later.


!!! error TS5071: Option '--resolveJsonModule' cannot be specified when 'module' is set to 'none', 'system', or 'umd'.
!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later.
!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later.
==== /a.ts (0 errors) ====
export const _ = 0;

Expand Down

This file was deleted.

This file was deleted.

Loading
Loading