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
