'use strict'; const common = require('../../common'); const assert = require('assert'); const { Worker } = require('worker_threads'); const bindingPath = require.resolve(`./build/${common.buildType}/binding`); const binding = require(bindingPath); assert.strictEqual(binding.hello(), 'world'); console.log('binding.hello() =', binding.hello()); // Test multiple loading of the same module. delete require.cache[bindingPath]; const rebinding = require(bindingPath); assert.strictEqual(rebinding.hello(), 'world'); assert.notStrictEqual(binding.hello, rebinding.hello); // Test that workers can load addons declared using NAPI_MODULE_INIT(). new Worker(` const { parentPort } = require('worker_threads'); const msg = require(${JSON.stringify(bindingPath)}).hello(); parentPort.postMessage(msg)`, { eval: true }) .on('message', common.mustCall((msg) => assert.strictEqual(msg, 'world')));