【问题标题】:Sequelize v6 - TypeError: sequelize.import is not a functionSequelize v6 - TypeError: sequelize.import 不是函数
【发布时间】:2021-08-21 21:51:14
【问题描述】:

我在 package.json 中使用带有 "type": "module" 的 ES 模块。并且我现在已经升级到最新版本的 Sequelize (6.6.2)。

我对这行代码有疑问:

const model = sequelize['import'](path.join(__dirname, file));

那是在我的模型文件夹中的 index.js 中。我发现 Sequelize 在 v6 (https://sequelize.org/master/manual/upgrade-to-v6.html) 中删除了“导入”功能。我在 Stack Overflow 上找到了这个答案:https://stackoverflow.com/a/63275525/571723

我尝试从该答案切换到const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes)。但是我收到一条错误消息,指出require is not defined。所以这就是我现在卡住的地方。似乎通过强迫您使用“require”,Sequelize 倒退了一步,因为我认为带有“import”的 ES 模块是 Node 当前和未来的最佳实践。

【问题讨论】:

    标签: node.js sequelize.js


    【解决方案1】:

    是的,你是对的。在upgrading Sequelize from v5 to v6 之后,至少删除了“导入”方法。所以尝试这样的事情:

    const path = require('path');
    const Sequelize = require('sequelize');
    const sequelize = new Sequelize('db_name', 'db_user', 'db_pass', {});
    
    const modelPath = path.join(__dirname, './path/to/model/file');
    const model = require(modelPath).default(sequelize, Sequelize);
    

    【讨论】:

    • 如果没有require,我该怎么做最后一行?
    • @dmikester1 import MyModel from './db/MyModel.js' 然后你可以使用MyModel
    猜你喜欢
    • 2020-11-13
    • 2020-10-18
    • 2020-11-06
    • 2016-07-30
    • 2019-01-06
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    相关资源
    最近更新 更多