typescript - Azure Functions: Kan inte använda import-sats utanför en modul
Jag kunde inte hitta en nyligen fråga som pratade om detta, så jag bestämde mig för att skapa en ny.
Jag bygger några Azure-funktioner med TypeScript och jag får:
import { Entity, BaseEntity, PrimaryColumn, Column, ManyToOne } från "typeorm"; SyntaxError: Kan inte använda import-sats utanför en modul
Detta är min tsconfig
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"outDir": "dist",
"rootDir": ".",
"sourceMap": true,
"esModuleInterop": true,
"strict": true,
"lib": [
"esnext"
],
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"moduleResolution": "Node",
"allowSyntheticDefaultImports": true
}
}
Några idéer om hur man löser detta? Tack!
Svar #1
Här är de 2 åtgärder du behöver göra för att lösa syntaxfelet
- Ändra
.js-filer till.cjs - Lägg också till
"type":"Module"till package.json
Kolla även de relaterade SO-trådarna och dokumentationen.
Svar #2
Det finns 2 platser att kontrollera och justera:
tsconfig.jsonpackage.json
tsconfig.json styr vad Typescript-kompilatorn producerar och hur den löser moduler kompileringstid. Viktiga alternativ i tsconfig är:
- (modul) kontrollerar utsläpp.
- (moduleResolution-alternativ) styr upplösning.
package.json styr i sin tur hur Nodejs löser moduler vid körtid. Viktigt alternativ är type. Om det utelämnas antas commonjs.
Du vill att båda ska vara på linje.
Om du vill ha klassiskt, välj:
//in package.json
"type": "commonjs",
//in tsconfig.json
"module": "CommonJS",
"moduleResolution": "node",
Om du vill ha futuristisk, mer läsbar och bakåtkompatibel med CommonJs-utdata, använd följande för ES-moduler:
//in package.json
"type": "module",
//in tsconfig.json
"module": "NodeNext",
"moduleResolution": "nodenext",
