1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-24 15:19:26 -05:00

fix: improve suggestions and hints when using CommonJS modules (#26287)

Ref https://github.com/denoland/deno/issues/26225
This commit is contained in:
Bartek Iwańczuk 2024-10-16 00:25:24 +01:00 committed by GitHub
parent 82d13fd45b
commit 40b1c42138
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 61 additions and 10 deletions

View file

@ -287,14 +287,20 @@ fn get_suggestions_for_terminal_errors(e: &JsError) -> Vec<FixSuggestion> {
if let Some(msg) = &e.message { if let Some(msg) = &e.message {
if msg.contains("module is not defined") if msg.contains("module is not defined")
|| msg.contains("exports is not defined") || msg.contains("exports is not defined")
|| msg.contains("require is not defined")
{ {
return vec![ return vec![
FixSuggestion::info( FixSuggestion::info_multiline(&[
"Deno does not support CommonJS modules without `.cjs` extension.", cstr!("Deno supports CommonJS modules in <u>.cjs</> files, or when there's a <u>package.json</>"),
), cstr!("with <i>\"type\": \"commonjs\"</> option and <i>--unstable-detect-cjs</> flag is used.")
FixSuggestion::hint( ]),
"Rewrite this module to ESM or change the file extension to `.cjs`.", FixSuggestion::hint_multiline(&[
), "Rewrite this module to ESM,",
cstr!("or change the file extension to <u>.cjs</u>,"),
cstr!("or add <u>package.json</> next to the file with <i>\"type\": \"commonjs\"</> option"),
cstr!("and pass <i>--unstable-detect-cjs</> flag."),
]),
FixSuggestion::hint("See https://docs.deno.com/go/commonjs for details"),
]; ];
} else if msg.contains("openKv is not a function") { } else if msg.contains("openKv is not a function") {
return vec![ return vec![

View file

@ -11,6 +11,11 @@
"args": "run exports_error.js", "args": "run exports_error.js",
"output": "exports_error.out", "output": "exports_error.out",
"exitCode": 1 "exitCode": 1
},
{
"args": "run require_error.js",
"output": "require_error.out",
"exitCode": 1
} }
] ]
} }

View file

@ -3,5 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
^ ^
at [WILDCARD]exports_error.js:1:23 at [WILDCARD]exports_error.js:1:23
info: Deno does not support CommonJS modules without `.cjs` extension. info: Deno supports CommonJS modules in .cjs files, or when there's a package.json
hint: Rewrite this module to ESM or change the file extension to `.cjs`. with "type": "commonjs" option and --unstable-detect-cjs flag is used.
hint: Rewrite this module to ESM,
or change the file extension to .cjs,
or add package.json next to the file with "type": "commonjs" option
and pass --unstable-detect-cjs flag.
hint: See https://docs.deno.com/go/commonjs for details

View file

@ -3,5 +3,10 @@ module.exports = {
^ ^
at [WILDCARD]module_error.js:1:1 at [WILDCARD]module_error.js:1:1
info: Deno does not support CommonJS modules without `.cjs` extension. info: Deno supports CommonJS modules in .cjs files, or when there's a package.json
hint: Rewrite this module to ESM or change the file extension to `.cjs`. with "type": "commonjs" option and --unstable-detect-cjs flag is used.
hint: Rewrite this module to ESM,
or change the file extension to .cjs,
or add package.json next to the file with "type": "commonjs" option
and pass --unstable-detect-cjs flag.
hint: See https://docs.deno.com/go/commonjs for details

View file

@ -0,0 +1,2 @@
const process = require("process");
const a = require("./a");

View file

@ -0,0 +1,12 @@
error: Uncaught (in promise) ReferenceError: require is not defined
const process = require("process");
^
at [WILDCARD]require_error.js:1:17
info: Deno supports CommonJS modules in .cjs files, or when there's a package.json
with "type": "commonjs" option and --unstable-detect-cjs flag is used.
hint: Rewrite this module to ESM,
or change the file extension to .cjs,
or add package.json next to the file with "type": "commonjs" option
and pass --unstable-detect-cjs flag.
hint: See https://docs.deno.com/go/commonjs for details

View file

@ -3,3 +3,11 @@ error: Uncaught (in promise) ReferenceError: require is not defined
console.log(require("./add").add(1, 2)); console.log(require("./add").add(1, 2));
^ ^
at file:///[WILDLINE]main_mix.js:[WILDLINE] at file:///[WILDLINE]main_mix.js:[WILDLINE]
info: Deno supports CommonJS modules in .cjs files, or when there's a package.json
with "type": "commonjs" option and --unstable-detect-cjs flag is used.
hint: Rewrite this module to ESM,
or change the file extension to .cjs,
or add package.json next to the file with "type": "commonjs" option
and pass --unstable-detect-cjs flag.
hint: See https://docs.deno.com/go/commonjs for details

View file

@ -2,3 +2,11 @@ error: Uncaught (in promise) ReferenceError: require is not defined
const { add } = require("./add"); const { add } = require("./add");
^ ^
at file:///[WILDLINE] at file:///[WILDLINE]
info: Deno supports CommonJS modules in .cjs files, or when there's a package.json
with "type": "commonjs" option and --unstable-detect-cjs flag is used.
hint: Rewrite this module to ESM,
or change the file extension to .cjs,
or add package.json next to the file with "type": "commonjs" option
and pass --unstable-detect-cjs flag.
hint: See https://docs.deno.com/go/commonjs for details