我目前正在尝试将一些代码从 javascript 迁移到 typescript。此代码使用knex包。我可以使用 构建和运行它tsc
,但我想esbuild
改用它(为了更快地构建)。
我用:
npx esbuild index.ts --bundle --platform=node --sourcemap=external --outfile=dist/index.js
但是当我尝试运行编译后的代码时,我得到:
Cannot find module '../../dialects/mysql/index.js'
我不知道这个dialect
目录是什么,也找不到任何关于它的文档。我看了一下这个 SO question,但无法真正理解其中的代码,并且错误似乎更多关于browserified
.
这是我用来重现错误的代码:
import Knex from 'knex';
const knex = Knex({
client: 'mysql',
connection: {
port: 3306,
host: 'localhost',
database: 'database',
user: 'user',
password: 'password',
charset: 'utf8mb4',
},
});
const fetchData = async () => {
const data = await knex('table')
.select()
.first();
return data;
};
(async () => {
const results = await fetchData();
console.log(results);
})();
有趣的是,仅使用mysql
包而不knex
使用两者都很tsc
好用esbuild
.
由于某种原因,只有构建esbuild
失败。我首先以为我错过了一个包,我安装了@types/node和@types/mysql,但它并没有解决我的问题。
如果有帮助,我使用以下内容tsconfig.json
:
{
"compilerOptions": {
"module": "commonjs",
"moduleResolution": "node",
"outDir": "dist",
"target": "es6",
"esModuleInterop": true
}
}