0

我似乎无法弄清楚为什么这不起作用

我的 Hapi.js index.ts 看起来像这样:

import { Server, Request, ResponseToolkit } from '@hapi/hapi';
import * as Loki from 'lokijs';

...

const db = new Loki(`${UPLOAD_PATH}/${DB_NAME}`, { persistenceMethod: 'fs' });

这很简单,取自一个众所周知的例子

我的 package.json 中的脚本如下所示:

"scripts": {
"prestart": "tsc",
"start": "node dist/index.js",
...

编译成 dist/index.js 当我运行 start 时,我收到以下错误:

TypeError: Loki is not a constructor

我已经尝试了各种各样的事情,但我想我错过了重点,如果有人可以帮助我,我将不胜感激。Loki 不是构造函数,我明白了,但我怎样才能实例化一个新的 Loki(),以及为什么同样的东西在其他地方也能起作用?

感谢您的帮助!

4

1 回答 1

0

您可以执行以下任一操作:

import * as Loki from 'lokijs';
const db = new Loki.default(`${UPLOAD_PATH}/${DB_NAME}`, { persistenceMethod: 'fs' });
// For me, I don't like this way. It looks bad.

或者

import Loki from 'lokijs';
const db = new Loki(`${UPLOAD_PATH}/${DB_NAME}`, { persistenceMethod: 'fs' });

在 lokijs 里面看,这个类似乎被导出为module.exports = factory(),相当于export default factory(),所以这个类被导出为default. 这是一个有助于理解我的意思的有用问题:ES6: "import * as alias" vs "import alias"

于 2021-03-27T09:15:19.260 回答