Skip to content
This repository was archived by the owner on Apr 16, 2020. It is now read-only.

Commit 7e5aba7

Browse files
committed
esm: remove .js support
Refs: nodejs/modules#180
1 parent e9dc43e commit 7e5aba7

19 files changed

+49
-34
lines changed

doc/api/esm.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ property:
5454

5555
## Notable differences between `import` and `require`
5656

57+
### Only Support for .mjs
58+
59+
ESM must have the `.mjs` extension
60+
5761
### No NODE_PATH
5862

5963
`NODE_PATH` is not part of resolving `import` specifiers. Please use symlinks
@@ -145,7 +149,8 @@ CommonJS modules loaded.
145149
### Resolve hook
146150

147151
The resolve hook returns the resolved file URL and module format for a
148-
given module specifier and parent file URL:
152+
given module specifier
153+
ile URL:
149154

150155
```js
151156
const baseURL = new URL('file://');
@@ -174,7 +179,6 @@ module. This can be one of the following:
174179
| `format` | Description |
175180
| --- | --- |
176181
| `'esm'` | Load a standard JavaScript module |
177-
| `'cjs'` | Load a node-style CommonJS module |
178182
| `'dynamic'` | Use a [dynamic instantiate hook][] |
179183

180184
For example, a dummy loader to load JavaScript restricted to browser resolution

lib/internal/modules/esm/default_resolve.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,7 @@ function search(target, base) {
4545

4646
const extensionFormatMap = {
4747
'__proto__': null,
48-
'.mjs': 'esm',
49-
'.js': 'cjs'
48+
'.mjs': 'esm'
5049
};
5150

5251
function resolve(specifier, parentURL) {

src/module_wrap.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ using v8::TryCatch;
4242
using v8::Undefined;
4343
using v8::Value;
4444

45-
static const char* const EXTENSIONS[] = {".mjs", ".js"};
45+
static const char* const EXTENSIONS[] = {".mjs"};
4646

4747
ModuleWrap::ModuleWrap(Environment* env,
4848
Local<Object> object,

test/common/index.mjs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
// Flags: --experimental-modules
22
/* eslint-disable node-core/required-modules */
3-
import common from './index.js';
3+
4+
import { createRequireFromPath } from 'module';
5+
6+
function createRequire(url) {
7+
return createRequireFromPath(url.replace('file://', ''));
8+
}
9+
10+
const require = createRequire(import.meta.url);
11+
const common = require('./index.js');
412

513
const {
614
isMainThread,
@@ -97,5 +105,6 @@ export {
97105
getBufferSources,
98106
disableCrashOnUnhandledRejection,
99107
getTTYfd,
100-
runWithInvalidFD
108+
runWithInvalidFD,
109+
createRequire
101110
};

test/es-module/test-esm-double-encoding.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ import '../common';
33

44
// Assert we can import files with `%` in their pathname.
55

6-
import '../fixtures/es-modules/test-esm-double-encoding-native%2520.js';
6+
import '../fixtures/es-modules/test-esm-double-encoding-native%2520.mjs';

test/es-module/test-esm-dynamic-import.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// Flags: --experimental-modules
2+
23
'use strict';
34
const common = require('../common');
45
const assert = require('assert');

test/es-module/test-esm-error-cache.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
'use strict';
2-
31
// Flags: --experimental-modules
42

3+
'use strict';
4+
55
require('../common');
66
const assert = require('assert');
77

8-
const file = '../fixtures/syntax/bad_syntax.js';
8+
const file = '../fixtures/syntax/bad_syntax.mjs';
99

1010
let error;
1111
(async () => {
Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
// Flags: --experimental-modules
2-
import '../common';
3-
import '../fixtures/es-module-require-cache/preload.js';
4-
import '../fixtures/es-module-require-cache/counter.js';
2+
import { createRequire } from '../common';
53
import assert from 'assert';
4+
//
5+
const require = createRequire(import.meta.url);
6+
7+
require('../fixtures/es-module-require-cache/preload.js');
8+
require('../fixtures/es-module-require-cache/counter.js');
9+
610
assert.strictEqual(global.counter, 1);
711
delete global.counter;
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/loader-shared-dep.mjs
2-
import '../common';
2+
import { createRequire } from '../common';
33
import assert from 'assert';
44
import '../fixtures/es-modules/test-esm-ok.mjs';
5-
import dep from '../fixtures/es-module-loaders/loader-dep.js';
5+
6+
const require = createRequire(import.meta.url);
7+
const dep = require('../fixtures/es-module-loaders/loader-dep.js');
68

79
assert.strictEqual(dep.format, 'esm');

test/es-module/test-esm-snapshot.mjs

Lines changed: 0 additions & 7 deletions
This file was deleted.

test/fixtures/es-module-loaders/loader-shared-dep.mjs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1-
import dep from './loader-dep.js';
21
import assert from 'assert';
32

3+
import {createRequire} from '../../common';
4+
5+
const require = createRequire(import.meta.url);
6+
const dep = require('./loader-dep.js');
7+
48
export function resolve(specifier, base, defaultResolve) {
59
assert.strictEqual(dep.format, 'esm');
610
return defaultResolve(specifier, base);

test/fixtures/es-module-loaders/loader-with-dep.mjs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
import dep from './loader-dep.js';
1+
import {createRequire} from '../../common';
2+
3+
const require = createRequire(import.meta.url);
4+
const dep = require('./loader-dep.js');
5+
26
export function resolve (specifier, base, defaultResolve) {
37
return {
48
url: defaultResolve(specifier, base).url,

test/fixtures/es-modules/esm-snapshot-mutator.js

Lines changed: 0 additions & 4 deletions
This file was deleted.

test/fixtures/es-modules/esm-snapshot.js

Lines changed: 0 additions & 2 deletions
This file was deleted.

test/fixtures/es-modules/pjson-main/main.js

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default 'main';
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
"main": "main.js"
2+
"main": "main.mjs"
33
}

test/fixtures/es-modules/test-esm-double-encoding-native%20.js renamed to test/fixtures/es-modules/test-esm-double-encoding-native%20.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
// Trivial test to assert we can load files with `%` in their pathname.
44
// Imported by `test-esm-double-encoding.mjs`.
55

6-
module.exports = 42;
6+
export default 42;

test/fixtures/syntax/bad_syntax.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
var foo bar;

0 commit comments

Comments
 (0)