I'm trying to add a module to my project , following the doc I add this line to my index.js on my node.js project
import { bkLabs } from '@berkelium/nlp-core';
but I get the following error
SyntaxError: Cannot use import statement outside a module
at wrapSafe (internal/modules/cjs/loader.js:1001:16)
at Module._compile (internal/modules/cjs/loader.js:1049:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
at Module.load (internal/modules/cjs/loader.js:950:32)
at Function.Module._load (internal/modules/cjs/loader.js:790:12)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:75:12)
at internal/main/run_main_module.js:17:47
then I looked for a solution and I found that I have to change the import for a require
const bkLabs = require('@berkelium/nlp-core');
but then I get this error:
internal/modules/cjs/loader.js:1102
throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath);
^
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /home/user/proyectos/chatBot/node_modules/@berkelium/nlp-core/src/index.js
require() of ES modules is not supported.
require() of /home/user/proyectos/chatBot/node_modules/@berkelium/nlp-core/src/index.js from /home/user/proyectos/chatBot/index.js 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.
Instead rename /home/user/proyectos/chatBot/node_modules/@berkelium/nlp-core/src/index.js to end in .cjs, change the requiring code to use import(), or remove "type": "module" from /home/user/proyectos/chatBot/node_modules/@berkelium/nlp-core/package.json.
I'm the developer of that library. Sorry for the inconvenience. You get that issue because the library was developed and packaged using ESModule syntax (i.e. you have to import modules using import). Since you are trying to use the library in a CommonJS syntax project, it won't work. The answer and the solution provided by Evgheni Calcutin is correct.
To resolve the issue I will work on the library so it can support both ESModule and CommonJS syntaxes. The library was renamed to make the name more convenient to pronounce. So the new library is berkelium. All documentations are provided.
Thanks!
Looks like the library you're trying to use is written with ESModule syntax and your NodeJS code with CommonJS.
You can’t require() ESM scripts; you can only import ESM scripts, like that: import {foo} from 'foo'.
This is a problem with mixing CommonJS and ESModules.
By default, nodejs uses CommonJS module syntax unless you specify "type": "module" in package.json or using .mjs exentions.
Solution, choose one that works best for you:
@berkelium/nlp-core to support hybrid-module syntax (see more information here: https://nodejs.org/api/packages.html#dual-commonjses-module-packages)If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With