Max*_*ose 12 javascript node.js typescript knex.js
我是 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');
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
import * as Knex from 'knex';
^^^^^^
SyntaxError: Cannot use import statement outside a module
Run Code Online (Sandbox Code Playgroud)
我也尝试过这些变体:
import * as Knex = require('knex');
import { * as Knex } from 'knex';
const * = require('knex');
const { * as Knex } = require('knex');
Run Code Online (Sandbox Code Playgroud)
但我在网上找不到任何似乎可以解决问题的解决方案。
对此的任何帮助都会很棒。
您正在混合两种不同类型的模块。import/export是JavaScript 标准模块语法(“ESM”代表“ECMAScript 模块”),但分配给属性exports是CommonJS 模块语法(又名“CJS”)。您需要使用其中之一,如果您使用 ESM,则需要通过使用"type": "module"inpackage.json或使用.mjs文件扩展名 \xc2\xa0\xe2\x80\x94 来告诉 Node.js,或者,因为您\'在使用 TypeScript 时,您可能需要"module": "ES2020"或类似的(更多此处)。
该错误告诉我们 Node.js 和/或 TypeScript 认为您正在使用 CJS。如果你想继续这样做,可能会是:
\nconst Knex = require("knex");\nRun Code Online (Sandbox Code Playgroud)\n...但请参阅文档,因为它们显示将导出作为函数调用。(也许你稍后会这样做。)
\n| 归档时间: |
|
| 查看次数: |
9035 次 |
| 最近记录: |