javascript - TypeScript/Knex: Kan ikke bruke import-setning utenfor en modul


Jeg er nybegynner i TypeScript og bruker for øyeblikket Knex for å lage en mal-tabell i vår PostgreSQL-database. På denne filen og andre støter jeg stadig på det samme problemet med TypeScript, koden er som følger:

import * as Knex from 'knex';


exports.up = async (knex: Knex): Promise<void> => {
    await knex.schema.raw(`
    CREATE TABLE test (
        test TEXT NOT NULL,
        tes2  INTEGER NOT NULL,
        PRIMARY KEY (key, website)
    ) 
`);
}


exports.down = async (knex: Knex): Promise<void> => {
    await knex.schema.dropTable('test');
}

og jeg får denne feilen:

import * as Knex from 'knex';
^^^^^^

SyntaxError: Cannot use import statement outside a module

Jeg har også prøvd disse variantene:

   import * as Knex = require('knex');
   import { * as Knex } from 'knex';
   const * = require('knex');
   const { * as Knex } = require('knex');

Men jeg kan ikke finne noen løsning på nettet som ser ut til å løse problemet.

Enhver hjelp med dette ville vært fantastisk.

Svar #1

Prøvde mange ting og ingenting hjalp, å prøve å endre typen til modul gjorde bare ting verre. Etter alt var det som manglet ts-node:

yarn add ts-node -D

Og du er ferdig =]

Svar #2

Denne feilen kan oppstå hvis du setter opp knex uten å spesifisere at du skal bruke TypeScript.

Sørg for at du bruker følgende kommando for å initialisere knex, hvis du lager typescript-migrasjoner:

knex init -x ts

Relaterte artikler