网站搜索

javascript - TypeScript/Knex:无法在模块外使用 import 语句


我是 TypeScript 的新手,目前正在使用 Knex 在我们的 PostgreSQL 数据库中创建一个模板表。在这个文件和其他文件中,我不断遇到 TypeScript 的同样问题,代码如下:

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');
}

而我收到这个错误:

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

SyntaxError: Cannot use import statement outside a module

我也尝试了这些变体:

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

但是我在网上找不到任何似乎能够解决这个问题的方案。

任何关于这方面的帮助都会非常棒。

答案#1

尝试了很多方法都没有用,尝试将类型改为模块只会让事情更糟。毕竟缺少的只是 ts-node:

yarn 添加 ts-node -D

你完成了 =]

答案#2

如果你在设置 knex 时 没有 指定将使用 TypeScript,就可能会发生此错误。

如果你正在创建 TypeScript 迁移,请确保使用以下命令初始化 knex:

knex init -x ts

相关文章