Skip to content

Commit 9f8d315

Browse files
aduh95codebytere
authored andcommitted
worker: add support for .cjs extension
PR-URL: #31662 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: David Carlier <devnexen@gmail.com> Reviewed-By: Yuta Hiroto <hello@hiroppy.me> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Denys Otrishko <shishugi@gmail.com>
1 parent a7a6261 commit 9f8d315

File tree

4 files changed

+20
-2
lines changed

4 files changed

+20
-2
lines changed

lib/internal/errors.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1356,7 +1356,7 @@ E('ERR_WORKER_PATH',
13561356
E('ERR_WORKER_UNSERIALIZABLE_ERROR',
13571357
'Serializing an uncaught exception failed', Error);
13581358
E('ERR_WORKER_UNSUPPORTED_EXTENSION',
1359-
'The worker script extension must be ".js" or ".mjs". Received "%s"',
1359+
'The worker script extension must be ".js", ".mjs", or ".cjs". Received "%s"',
13601360
TypeError);
13611361
E('ERR_WORKER_UNSUPPORTED_OPERATION',
13621362
'%s is not supported in workers', TypeError);

lib/internal/worker.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ class Worker extends EventEmitter {
103103
filename = path.resolve(filename);
104104

105105
const ext = path.extname(filename);
106-
if (ext !== '.js' && ext !== '.mjs') {
106+
if (!/^\.[cm]?js$/.test(ext)) {
107107
throw new ERR_WORKER_UNSUPPORTED_EXTENSION(ext);
108108
}
109109
}

test/fixtures/worker-data.cjs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
const { workerData, parentPort } = require('worker_threads');
2+
3+
parentPort.postMessage(workerData);
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
'use strict';
2+
const common = require('../common');
3+
const fixtures = require('../common/fixtures');
4+
const assert = require('assert');
5+
const { Worker } = require('worker_threads');
6+
7+
const workerData = 'Hello from main thread';
8+
9+
const worker = new Worker(fixtures.path('worker-data.cjs'), {
10+
workerData
11+
});
12+
13+
worker.on('message', common.mustCall((message) => {
14+
assert.strictEqual(message, workerData);
15+
}));

0 commit comments

Comments
 (0)