mirror of
https://github.com/nodejs/node.git
synced 2024-12-01 16:10:02 +01:00
781e41df61
PR-URL: https://github.com/nodejs/node/pull/30802 Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: João Reis <reis@janeasystems.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
42 lines
1.4 KiB
JavaScript
42 lines
1.4 KiB
JavaScript
'use strict';
|
|
|
|
const common = require('../common');
|
|
const fixtures = require('../common/fixtures');
|
|
const { spawn } = require('child_process');
|
|
const assert = require('assert');
|
|
const path = require('path');
|
|
|
|
const requiring = path.resolve(fixtures.path('/es-modules/cjs-esm.js'));
|
|
const required = path.resolve(
|
|
fixtures.path('/es-modules/package-type-module/cjs.js')
|
|
);
|
|
const pjson = path.resolve(
|
|
fixtures.path('/es-modules/package-type-module/package.json')
|
|
);
|
|
|
|
const basename = 'cjs.js';
|
|
|
|
const child = spawn(process.execPath, [requiring]);
|
|
let stderr = '';
|
|
child.stderr.setEncoding('utf8');
|
|
child.stderr.on('data', (data) => {
|
|
stderr += data;
|
|
});
|
|
child.on('close', common.mustCall((code, signal) => {
|
|
assert.strictEqual(code, 1);
|
|
assert.strictEqual(signal, null);
|
|
|
|
assert.ok(stderr.replace(/\r/g, '').includes(
|
|
`Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: ${required}` +
|
|
'\nrequire() of ES modules is not supported.\nrequire() of ' +
|
|
`${required} from ${requiring} ` +
|
|
'is an ES module file as it is a .js file whose nearest parent ' +
|
|
'package.json contains "type": "module" which defines all .js ' +
|
|
'files in that package scope as ES modules.\nInstead rename ' +
|
|
`${basename} to end in .cjs, change the requiring code to use ` +
|
|
'import(), or remove "type": "module" from ' +
|
|
`${pjson}.\n`));
|
|
assert.ok(stderr.includes(
|
|
'Error [ERR_REQUIRE_ESM]: Must use import to load ES Module'));
|
|
}));
|