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
