Error: Must use import to load ES Module
mysterybear opened this issue · comments
mysterybear commented
Not sure how to use this from my project anymore.
Here's my tsconfig
{
"compilerOptions": {
"target": "es2015",
"module": "commonjs",
"outDir": "dist",
"rootDir": "src",
"strict": true,
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"resolveJsonModule": true,
"forceConsistentCasingInFileNames": true
}
}
package.json
{
"name": "typescript-node",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"scripts": {
"dev": "tsnd --respawn ./src/index.ts",
"build": "tsc",
"start": "node dist/index.js",
"codegen": "graphql-codegen --config codegen.yaml"
},
"dependencies": {
"@graphql-typed-document-node/core": "^3.1.0",
"@types/d3-dsv": "^3.0.0",
"@types/node-fetch": "^2.5.7",
"change-case": "^4.1.2",
"d3-dsv": "^3.0.1",
"dotenv": "^8.2.0",
"fp-ts": "^2.9.3",
"graphql": "^15.4.0",
"graphql-request": "^3.3.0",
"immer": "^8.0.0",
"node-fetch": "^2.6.1",
"query-string": "^6.13.7",
"serialize-error": "^7.0.1",
"zod": "^1.11.11"
},
"devDependencies": {
"@graphql-codegen/cli": "^1.17.10",
"@graphql-codegen/typed-document-node": "^1.17.9",
"@graphql-codegen/typescript": "^1.17.10",
"@graphql-codegen/typescript-operations": "^1.17.8",
"@types/node": "^14.14.6",
"@types/react": "^16.9.56",
"ts-node-dev": "^1.0.0-pre.44",
"typescript": "^4.0.5"
}
}
If I try to import d3 from "d3-dsv"
or import * as d3 from "d3-dsv"
I get:
[ERROR] 16:59:52 Error: Must use import to load ES Module: node_modules/d3-dsv/src/index.js
require() of ES modules is not supported.
require() of node_modules/d3-dsv/src/index.js from src/index.ts 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 index.js to end in .cjs, change the requiring code to use import(), or remove "type": "module" from node_modules/d3-dsv/package.json.
It seems to be asking me to make changes within the d3-dsv
module? I've read this d3/d3#3469 and can't make sense of what to do as a user of the module in a typescript-node setting.
mysterybear commented
Workaround for now is just installing v2 of d3-dsv and @types/d3-dsv
Philippe Rivière commented
The error message seems to want to try const d3 = await import("d3-dsv");
mysterybear commented
Mike Bostock commented
Please see this FAQ https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c