node.js - Hvordan bruke ES6 import med 'request' npm-modulen


Når jeg gjør om noe TypeScript-kode til ES6 (prosjektet jeg jobber med kjører både i nettleseren og på en Node-server, jeg vil gjerne tree-shake nettleser-bundle), prøver jeg å eliminere bruk av require og bare bruke import. Men når jeg gjør dette...

import * as request from 'request';

og deretter kalle request(), får jeg kjøretidsfeil i Node (etter å ha brukt babel for å gjøre koden ES5, og dermed kompatibel med Node):

TypeError: request is not a function

På den annen side, hvis jeg gjør dette:

import request from 'request';

da klager TypeScript-kompilatoren med

error TS1192: Module '"<mypath>/node_modules/@types/request/index"' has no default export.

Hvis jeg manuelt endrer den kompilerte JS-koden til å bruke import request from 'request';, fungerer det faktisk fint... hvordan kan jeg tvinge TS-kompilatoren til å godta denne koden og bare la den passere?

Svar #1

Kan du prøve å legge til allowSyntheticDefaultImports: true til din

tsconfig.json

ser ut til å fortsatt være et åpent problem i Typescript.

Svar #2

I hovedsak må du fjerne kommentaren i tsconfig.json på linje 46, fordi standard ts-konfigurasjonsfil har dette alternativet, men det er kommentert som standard

Relaterte artikler