URI.js icon indicating copy to clipboard operation
URI.js copied to clipboard

@types/urijs/index can only be default-imported using the 'allowSyntheticDefaultImports' flag

Open BenRacicot opened this issue 3 years ago • 1 comments

Hello, I found an error that seems to be related to URIjs and ES6. Someone from 2016 [288] seems to have found this previously and couldnt replicate but here are the steps. Could you help me understand how to get around this?

Error: node_modules/stellar-sdk/lib/server.d.ts:2:8 - error TS1259: Module '"/node_modules/@types/urijs/index"' can only be default-imported using the 'allowSyntheticDefaultImports' flag

2 import URI from "urijs";
         ~~~

  node_modules/@types/urijs/index.d.ts:26:1
    26 export = URI;
       ~~~~~~~~~~~~~
    This module is declared with using 'export =', and can only be used with a default import when using the 'allowSyntheticDefaultImports' flag.

To replicate

  1. ng new AppName
  2. npm install --save stellar-sdk
  3. add the SDK to the app within angular.json's build scripts: ["./node_modules/stellar-sdk/dist/stellar-sdk.min.js"]
  4. run the app to see the error

BenRacicot avatar May 26 '22 13:05 BenRacicot

Figured this out quickly and thought I'd leave the fix here.

The usage stated an import like

import * as StellarSDK from "stellar-sdk";

that's where allowSyntheticDefaultImports comes in. From TS docs.

Allow Synthetic Default Imports -
allowSyntheticDefaultImports
When set to true, allowSyntheticDefaultImports allows you to write an import like:

import React from "react";
instead of:

import * as React from "react";

Please feel free to close.

BenRacicot avatar May 26 '22 13:05 BenRacicot