Zoeken op website

typescript - esModuleInterop: true, toch geeft TSLint een foutmelding met: "kan alleen als standaard worden geïmporteerd met de 'esModuleInterop'-vlag"


Ik weet niet zeker waarom ik de titel-fout krijg bij beide standaardimports hieronder:

// ./src/classes/FirestoreConnection.ts

import admin, {firestore} from "firebase-admin";
import firebase from "firebase";

// TS1259: Module '"/home/owner/PhpstormProjects/shopify/project/node_modules/firebase/index"' can only be default-imported using the 'esModuleInterop' flag  index.d.ts(8790, 1): This module is declared with using 'export =', and can only be used with a default import when using the 'esModuleInterop' flag.


TS1259: Module '"/home/owner/PhpstormProjects/shopify/buyUsedCloudRun/node_modules/firebase/index"' can only be default-imported using the 'esModuleInterop' flag  index.d.ts(8790, 1): This module is declared with using 'export =', and can only be used with a default import when using the 'esModuleInterop' flag.

Ik zie dat de vlag op true staat, is er een andere instelling hieronder die conflicteert?

./tsconfig.json
{
  "compilerOptions" : {
    "module" : "commonjs",
    "target" : "es5",
    "sourceMap" : true,
    "esModuleInterop" : true,
    "types" : ["jest", "node"],
    "outDir" : "build",
    "allowSyntheticDefaultImports" : true,
    "moduleResolution" : "Node"
  },
  "exclude" : [
    "node_modules"
    , ".idea"
    , "build"
    , "**/*.test.ts"
  ],
  "include" : ["src/*"],
  "lib" : ["dom", "es2015", "es2017"],
  "skipLibCheck": false,
  "strict": false,
  "noEmit": false,
  "resolveJsonModule": true,
  "isolatedModules": false
}

Antwoord #1

Opgelost door from te vervangen door = require-syntaxis, en de benoemde export naar een nieuwe regel te verplaatsen. https://www.typescriptlang.org/docs/handbook/modules.html#export--and-import--require

import admin = require("firebase-admin");
import {firestore } from "firebase-admin";
import firebase = require("firebase");