I am writing this nodeJS project, and I wanted to include the typescript mastodon library but it keeps telling me this. I am kinda unsure how to proceed.
I am writing this nodeJS project, and I wanted to include the typescript mastodon library but it keeps telling me this. I am kinda unsure how to proceed.
Error [ERR_REQUIRE_ESM]: require() of ES Module /home/sky/Documents/hourlypets/node_modules/tsl-mastodon-api/lib/index.js from /home/sky/Documents/hourlypets/src/mastodon.ts not supported. Instead change the require of index.js in /home/sky/Documents/hourlypets/src/mastodon.ts to a dynamic import() which is available in all CommonJS modules. at require.extensions. [as .js] (/usr/lib/node_modules/ts-node/dist/index.js:851:20) at Object. (/home/sky/Documents/hourlypets/src/mastodon.ts:36:31) at m._compile (/usr/lib/node_modules/ts-node/dist/index.js:857:29) at require.extensions. [as .ts] (/usr/lib/node_modules/ts-node/dist/index.js:859:16) at Object. (/home/sky/Documents/hourlypets/src/bot.ts:13:20) at m._compile (/usr/lib/node_modules/ts-node/dist/index.js:857:29) at require.extensions. [as .ts] (/usr/lib/node_modules/ts-node/dist/index.js:859:16) at phase4 (/usr/lib/node_modules/ts-node/dist/bin.js:466:20) at bootstrap (/usr/lib/node_modules/ts-node/dist/bin.js:54:12) at main (/usr/lib/node_modules/ts-node/dist/bin.js:33:12) at Object. (/usr/lib/node_modules/ts-node/dist/bin.js:579:5) { code: 'ERR_REQUIRE_ESM' } I am importing the lib like this
import * as Mastodon from 'tsl-mastodon-api';
This is usually a side effect of the uneven adoption of ESM vs CommonJS and mixing of the two. It's a bit annoying, but, usually fairly easy to work around. But, a lot of it depends on how your project is configured - both the package.json and tsconfig.
Do you have the code available somewhere? I'm mostly interested in the
package.json
(specifically thetype
property) andtsconfig
if you have one (and this is Typescript). Also, is this a Typescript project or a regular Javascript project?Sorry, there's several variables here that affect the proper solution.
EDIT : One more question. If this is a Typescript project, how are you executing it? Transpile then run with node? ts-node? ts-node-esm?
EDIT x2 : If you'll throw the project, or a simplified example that demonstrates the problem, up on github or somewhere else publicly accessible we should be able to fix you up pretty quickly. You can exclude the
node_modules/
folder.__{ "name": "hourlypets", "version": "1.0.0", "description": "A bot for displaying hourly pets", "main": "dist/index.js", "scripts": { "start": "node dist/index.js", "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { "@types/node": "^20.5.1", "typescript": "^5.1.6" }, "dependencies": { "@petfinder/petfinder-js": "^1.0.6", "dotenv": "^16.3.1", "tsl-mastodon-api": "^0.4.0" } } _
{ "compilerOptions": { "module": "es6", "esModuleInterop": true, "target": "es6", "moduleResolution": "node", "sourceMap": true, "outDir": "dist" }, "lib": ["es2015"] }
I am using ts-node
Hehe, this is the same type of answer I get from clients when I ask more than one question at a time 😆
Do you have answers to the other questions? Or, much better, can you post the code including your package.json and tsconfig to github/etc?