如何正确添加和使用Objection.js

How to correctly add and use Objection.js

我正在尝试将 Objection.js 添加到我的项目 (using ES6 "type": "module"),并收到指向 ./models/user.js:

的错误
import { Model } from "objection";
         ^^^^^
SyntaxError: The requested module 'objection' does not provide an export named 'Model'

使用以下代码:

./methods.js

import User from "./models/user.js";

async function getInfo(idnum) {
  const someUser = await User.query().findById(idnum);
  return someUser;
}

./models/user.js

import db from "../connection.js";
import { Model } from "objection";

Model.knex(db);

class User extends Model {
  static get tableName() {
    return "users";
  }
}

export default User;

./connection.js

const environment = process.env.NODE_ENV || "development";

import knexfile from "../knexfile.js";
const connection = knexfile[environment];

import knex from "knex";
const db = knex(connection);

export default db;

更新 creator of Objection.js said import { Model } from "objection" 应该有效。

我做错了什么?

如果您在 Node 应用程序中使用 import,我希望您为文件使用 .mjs 扩展名。

但是如果您使用 .js 作为扩展名,那么您必须使用 require.

调用该模块
const { Model } = require('objection');

这是我曾经遇到的问题...我不知道这是否是您问题的解决方案。

目前唯一的解决方法似乎是像这样导入 Model

import objection from "objection";
const { Model } = objection;

因为 Objection.js 是这样导出的:

export default { Model }

而不是这样:

export { Model }