node.js - "long"-paketet bryter `tsc build`


Yarn installerar long som ett beroende för andra moduler. Det installerar "umd"-versionen, som tydligen är en CommonJS-modul.

Jag får följande fel:

node_modules/long/umd/index.d.ts:1:18 - error TS1479: The current file is a CommonJS module whose imports will produce 'require' calls; however, the referenced file is an ECMAScript module and cannot be imported with 'require'. Consider writing a dynamic 'import("../index.js")' call instead.        

import Long from "../index.js";

Uppenbarligen kan jag inte bara uppdatera filen som angivits.

Finns det ett sätt att tvinga TypeScript-kompilatorn att inte använda umd-versionen?

package.json

{
  "name": "<project>",
  "version": "1.0.0",
  "engines": {
    "node": "20.x.x"
  },
  "main": "index.js",
  "repository": "<repo>",
  "author": "<author>",
  "license": "MIT",
  "scripts": {
    "dev": "nodemon",
    "build": "tsc && tsc-alias",
    ...
  },
  "devDependencies": {
    "nodemon": "^3.0.1",
    "ts-node": "^10.9.1",
    "tsc-alias": "^1.8.7",
    "tsconfig-paths": "^4.2.0",
    "typescript": "^5.3.0-dev.20230920"
  },
  "dependencies": {
    ...
  }
}

tsconfig.json

{
  "compilerOptions": {
    "target": "ESNext",
    "module": "NodeNext",
    "lib": ["ESNext", "DOM", "DOM.Iterable"],
    "baseUrl": "src",
    "outDir": "./build",
    "sourceMap": true,
    "noImplicitAny": true,
    "types": ["./elevenlabs-api.d.ts"],
    "paths": {
      "@/*": ["./*"],
      ...
    }
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "**/*.spec.ts"]
}

Jag har försökt installera [email uttryckligen (icke-UMD-version) [email har en umd-undermapp. Baspaketet i node_modules är korrekt, men alla andra paket som beror på det skapar sin egen node_modules-mapp med den felaktiga versionen.

Jag har försökt använda samma versioner av de överordnade beroenden som fungerar. Samma resultat: den brytande long-versionen installeras ändå.

Relaterade artiklar