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");
