I am trying to use the web-worker npm package. However, I get the following error:
(node:48786) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
/Users/myUser/Documents/workers-test-demo/node_modules/web-worker/node.js:17
import URL from 'url';
^^^^^^
SyntaxError: Cannot use import statement outside a module
at internalCompileFunction (node:internal/vm:77:18)
at wrapSafe (node:internal/modules/cjs/loader:1288:20)
at Module._compile (node:internal/modules/cjs/loader:1340:27)
at Module._extensions..js (node:internal/modules/cjs/loader:1435:10)
at Module.load (node:internal/modules/cjs/loader:1207:32)
at Module._load (node:internal/modules/cjs/loader:1023:12)
at cjsLoader (node:internal/modules/esm/translators:356:17)
at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:305:7)
at ModuleJob.run (node:internal/modules/esm/module_job:218:25)
at async ModuleLoader.import (node:internal/modules/esm/loader:329:24)
Node.js v20.11.0
My entire index.js consists of:
import Worker from "web-worker";
new Worker("./hello.js");
and I already set “type”:”module” on my package.json
{
"name": "workers-test-demo",
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "module",
"scripts": {
"start": "node index.js",
"test": "echo "Error: no test specified" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"web-worker": "^1.3.0"
}
}
I’ve spent to much time trying to figure how to solve this, why does this happen?
I see from the package.json of the web-worker package that it has a
...
"exports": {
"types": "./index.d.ts",
"import": {
"bun": "./browser.js",
"browser": "./browser.js",
"default": "./node.js"
},
"module": {
"bun": "./browser.js",
"browser": "./browser.js",
"default": "./node.js"
},
"default": {
"bun": "./cjs/browser.js",
"browser": "./cjs/browser.js",
"default": "./cjs/node.js"
}
},
...
So, in theory, I should be able to import the package, and the error stems from ./node.js which is a supposedly a module, but I don’t know why it is not treated like one.