summaryrefslogtreecommitdiff
path: root/test/message
diff options
context:
space:
mode:
authorguybedford <guybedford@gmail.com>2018-08-28 17:28:46 +0200
committerMyles Borins <mylesborins@google.com>2019-03-27 15:52:11 -0400
commitb1094dbe19f31f7a69ad16d193748f610b159073 (patch)
treebb623ea607ed54c27ef36ee9453f5623e19cbb90 /test/message
parent39141426d46a7e55d93ad2e8efa12ed86d223522 (diff)
downloadnode-new-b1094dbe19f31f7a69ad16d193748f610b159073.tar.gz
esm: phase two of new esm implementation
This PR updates the current `--experimental-modules` implementation based on the work of the modules team and reflects Phase 2 of our new modules plan. The largest differences from the current implementation include * `packge.type` which can be either `module` or `commonjs` - `type: "commonjs"`: - `.js` is parsed as commonjs - default for entry point without an extension is commonjs - `type: "module"`: - `.js` is parsed as esm - does not support loading JSON or Native Module by default - default for entry point without an extension is esm * `--entry-type=[mode]` - allows you set the type on entry point. * A new file extension `.cjs`. - this is specifically to support importing commonjs in the `module` mode. - this is only in the esm loader, the commonjs loader remains untouched, but the extension will work in the old loader if you use the full file path. * `--es-module-specifier-resolution=[type]` - options are `explicit` (default) and `node` - by default our loader will not allow for optional extensions in the import, the path for a module must include the extension if there is one - by default our loader will not allow for importing directories that have an index file - developers can use `--es-module-specifier-resolution=node` to enable the commonjs specifier resolution algorithm - This is not a “feature” but rather an implementation for experimentation. It is expected to change before the flag is removed * `--experimental-json-loader` - the only way to import json when `"type": "module"` - when enable all `import 'thing.json'` will go through the experimental loader independent of mode - based on https://github.com/whatwg/html/issues/4315 * You can use `package.main` to set an entry point for a module - the file extensions used in main will be resolved based on the `type` of the module Refs: https://github.com/nodejs/modules/blob/master/doc/plan-for-new-modules-implementation.md Refs: https://github.com/GeoffreyBooth/node-import-file-specifier-resolution-proposal Refs: https://github.com/nodejs/modules/pull/180 Refs: https://github.com/nodejs/ecmascript-modules/pull/6 Refs: https://github.com/nodejs/ecmascript-modules/pull/12 Refs: https://github.com/nodejs/ecmascript-modules/pull/28 Refs: https://github.com/nodejs/modules/issues/255 Refs: https://github.com/whatwg/html/issues/4315 Refs: https://github.com/w3c/webcomponents/issues/770 Co-authored-by: Myles Borins <MylesBorins@google.com> Co-authored-by: John-David Dalton <john.david.dalton@gmail.com> Co-authored-by: Evan Plaice <evanplaice@gmail.com> Co-authored-by: Geoffrey Booth <webmaster@geoffreybooth.com> Co-authored-by: Michaël Zasso <targos@protonmail.com> PR-URL: https://github.com/nodejs/node/pull/26745 Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Guy Bedford <guybedford@gmail.com> Reviewed-By: Ben Coe <bencoe@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Сковорода Никита Андреевич <chalkerx@gmail.com>
Diffstat (limited to 'test/message')
-rw-r--r--test/message/esm_display_syntax_error.out3
-rw-r--r--test/message/esm_display_syntax_error_import.mjs6
-rw-r--r--test/message/esm_display_syntax_error_import.out2
-rw-r--r--test/message/esm_display_syntax_error_import_module.mjs5
-rw-r--r--test/message/esm_display_syntax_error_import_module.out4
-rw-r--r--test/message/esm_display_syntax_error_module.mjs5
-rw-r--r--test/message/esm_display_syntax_error_module.out3
7 files changed, 16 insertions, 12 deletions
diff --git a/test/message/esm_display_syntax_error.out b/test/message/esm_display_syntax_error.out
index 1c68ecb952..5e82a1e1ee 100644
--- a/test/message/esm_display_syntax_error.out
+++ b/test/message/esm_display_syntax_error.out
@@ -2,6 +2,7 @@
file:///*/test/message/esm_display_syntax_error.mjs:3
await async () => 0;
^^^^^
+
SyntaxError: Unexpected reserved word
- at internal/modules/esm/translators.js:*:*
+ at Loader.moduleStrategy (internal/modules/esm/translators.js:*:*)
at async link (internal/modules/esm/module_job.js:*:*)
diff --git a/test/message/esm_display_syntax_error_import.mjs b/test/message/esm_display_syntax_error_import.mjs
index 87cedf1d4e..12d10270e9 100644
--- a/test/message/esm_display_syntax_error_import.mjs
+++ b/test/message/esm_display_syntax_error_import.mjs
@@ -1,7 +1,7 @@
// Flags: --experimental-modules
-/* eslint-disable no-unused-vars */
-import '../common';
+/* eslint-disable no-unused-vars, node-core/required-modules */
+import '../common/index.mjs';
import {
foo,
notfound
-} from '../fixtures/es-module-loaders/module-named-exports';
+} from '../fixtures/es-module-loaders/module-named-exports.mjs';
diff --git a/test/message/esm_display_syntax_error_import.out b/test/message/esm_display_syntax_error_import.out
index edbbde9f2d..a3601d6cb4 100644
--- a/test/message/esm_display_syntax_error_import.out
+++ b/test/message/esm_display_syntax_error_import.out
@@ -2,7 +2,7 @@
file:///*/test/message/esm_display_syntax_error_import.mjs:6
notfound
^^^^^^^^
-SyntaxError: The requested module '../fixtures/es-module-loaders/module-named-exports' does not provide an export named 'notfound'
+SyntaxError: The requested module '../fixtures/es-module-loaders/module-named-exports.mjs' does not provide an export named 'notfound'
at ModuleJob._instantiate (internal/modules/esm/module_job.js:*:*)
at async ModuleJob.run (internal/modules/esm/module_job.js:*:*)
at async Loader.import (internal/modules/esm/loader.js:*:*)
diff --git a/test/message/esm_display_syntax_error_import_module.mjs b/test/message/esm_display_syntax_error_import_module.mjs
index 32c0edb350..a53bbbcd19 100644
--- a/test/message/esm_display_syntax_error_import_module.mjs
+++ b/test/message/esm_display_syntax_error_import_module.mjs
@@ -1,3 +1,4 @@
// Flags: --experimental-modules
-import '../common';
-import '../fixtures/es-module-loaders/syntax-error-import';
+/* eslint-disable node-core/required-modules */
+import '../common/index.mjs';
+import '../fixtures/es-module-loaders/syntax-error-import.mjs';
diff --git a/test/message/esm_display_syntax_error_import_module.out b/test/message/esm_display_syntax_error_import_module.out
index 0512a9ac77..0daaeff5b9 100644
--- a/test/message/esm_display_syntax_error_import_module.out
+++ b/test/message/esm_display_syntax_error_import_module.out
@@ -1,8 +1,8 @@
(node:*) ExperimentalWarning: The ESM module loader is experimental.
file:///*/test/fixtures/es-module-loaders/syntax-error-import.mjs:1
-import { foo, notfound } from './module-named-exports';
+import { foo, notfound } from './module-named-exports.mjs';
^^^^^^^^
-SyntaxError: The requested module './module-named-exports' does not provide an export named 'notfound'
+SyntaxError: The requested module './module-named-exports.mjs' does not provide an export named 'notfound'
at ModuleJob._instantiate (internal/modules/esm/module_job.js:*:*)
at async ModuleJob.run (internal/modules/esm/module_job.js:*:*)
at async Loader.import (internal/modules/esm/loader.js:*:*)
diff --git a/test/message/esm_display_syntax_error_module.mjs b/test/message/esm_display_syntax_error_module.mjs
index e74b70bec8..5905d2a954 100644
--- a/test/message/esm_display_syntax_error_module.mjs
+++ b/test/message/esm_display_syntax_error_module.mjs
@@ -1,3 +1,4 @@
// Flags: --experimental-modules
-import '../common';
-import '../fixtures/es-module-loaders/syntax-error';
+/* eslint-disable node-core/required-modules */
+import '../common/index.mjs';
+import '../fixtures/es-module-loaders/syntax-error.mjs';
diff --git a/test/message/esm_display_syntax_error_module.out b/test/message/esm_display_syntax_error_module.out
index 4e4cbf2ea3..a1498f72c9 100644
--- a/test/message/esm_display_syntax_error_module.out
+++ b/test/message/esm_display_syntax_error_module.out
@@ -2,5 +2,6 @@
file:///*/test/fixtures/es-module-loaders/syntax-error.mjs:2
await async () => 0;
^^^^^
+
SyntaxError: Unexpected reserved word
- at internal/modules/esm/translators.js:*:*
+ at Loader.moduleStrategy (internal/modules/esm/translators.js:*:*) \ No newline at end of file