如何正确添加和使用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 }
我正在尝试将 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 }