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

Commit 85cf202

Browse files
committed
esm: remove .js support
Refs: nodejs/modules#180 PR-URL: #6 Reviewed-By: Guy Bedford <guybedford@gmail.com> Reviewed-By: John-David Dalton <john.david.dalton@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com>
1 parent d822a1e commit 85cf202

19 files changed

+58
-38
lines changed

doc/api/esm.md

Lines changed: 14 additions & 6 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
@@ -95,12 +99,17 @@ When loaded via `import` these modules will provide a single `default` export
9599
representing the value of `module.exports` at the time they finished evaluating.
96100

97101
```js
98-
// foo.js
99-
module.exports = { one: 1 };
102+
// cjs.js
103+
module.exports = 'cjs';
104+
105+
// esm.mjs
106+
import { createRequireFromPath as createRequire } from 'module';
107+
import { fileURLToPath as fromPath } from 'url';
108+
109+
const require = createRequire(fromPath(import.meta.url));
100110

101-
// bar.js
102-
import foo from './foo.js';
103-
foo.one === 1; // true
111+
const cjs = require('./cjs');
112+
cjs === 'cjs'; // true
104113
```
105114
106115
Builtin modules will provide named exports of their public API, as well as a
@@ -174,7 +183,6 @@ module. This can be one of the following:
174183
| `format` | Description |
175184
| --- | --- |
176185
| `'esm'` | Load a standard JavaScript module |
177-
| `'cjs'` | Load a node-style CommonJS module |
178186
| `'builtin'` | Load a node builtin CommonJS module |
179187
| `'dynamic'` | Use a [dynamic instantiate hook][] |
180188

lib/internal/modules/esm/default_resolve.js

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

4747
const extensionFormatMap = {
4848
'__proto__': null,
49-
'.mjs': 'esm',
50-
'.js': 'cjs'
49+
'.mjs': 'esm'
5150
};
5251

5352
function resolve(specifier, parentURL) {

src/module_wrap.cc

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

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

4949
ModuleWrap::ModuleWrap(Environment* env,
5050
Local<Object> object,

test/common/index.mjs

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

514
const {
615
isMainThread,
@@ -93,5 +102,6 @@ export {
93102
getBufferSources,
94103
disableCrashOnUnhandledRejection,
95104
getTTYfd,
96-
runWithInvalidFD
105+
runWithInvalidFD,
106+
createRequire
97107
};

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.

0 commit comments

Comments
 (0)