Skip to content

Commit

Permalink
worker: handle --input-type more consistently
Browse files Browse the repository at this point in the history
PR-URL: nodejs#54979
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
  • Loading branch information
aduh95 authored and louwers committed Nov 2, 2024
1 parent a752599 commit 4ad06f1
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
4 changes: 3 additions & 1 deletion lib/internal/main/worker_thread.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ let debug = require('internal/util/debuglog').debuglog('worker', (fn) => {
});

const assert = require('internal/assert');
const { getOptionValue } = require('internal/options');
const { exitCodes: { kGenericUserError } } = internalBinding('errors');

prepareWorkerThreadExecution();
Expand Down Expand Up @@ -152,7 +153,7 @@ port.on('message', (message) => {
break;
}

case 'classic': {
case 'classic': if (getOptionValue('--input-type') !== 'module') {
const { evalScript } = require('internal/process/execution');
const name = '[worker eval]';
// This is necessary for CJS module compilation.
Expand All @@ -168,6 +169,7 @@ port.on('message', (message) => {
break;
}

// eslint-disable-next-line no-fallthrough
case 'module': {
const { evalModuleEntryPoint } = require('internal/process/execution');
PromisePrototypeThen(evalModuleEntryPoint(filename), undefined, (e) => {
Expand Down
10 changes: 9 additions & 1 deletion test/parallel/test-worker-cli-options.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Flags: --expose-internals --expose-gc
'use strict';
require('../common');
const common = require('../common');
const { Worker } = require('worker_threads');
const assert = require('assert');

Expand Down Expand Up @@ -29,3 +29,11 @@ new Worker(CODE, { eval: true, env: process.env, execArgv: ['--expose-internals'
assert.throws(() => {
new Worker(CODE, { eval: true, execArgv: ['--expose-gc'] });
}, /ERR_WORKER_INVALID_EXEC_ARGV/);

// Test ESM eval
new Worker('export {}', { eval: true, execArgv: ['--input-type=module'] });
new Worker('export {}', { eval: true, execArgv: ['--input-type=commonjs'] })
.once('error', common.expectsError({ name: 'SyntaxError' }));
new Worker('export {}', { eval: true, execArgv: ['--experimental-detect-module'] });
new Worker('export {}', { eval: true, execArgv: ['--no-experimental-detect-module'] })
.once('error', common.expectsError({ name: 'SyntaxError' }));

0 comments on commit 4ad06f1

Please sign in to comment.