sequelize.import 不是函数 [英] sequelize.import is not a function

查看:51
本文介绍了sequelize.import 不是函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚开始表达.

我想导入文件进行续集和声明:

I want to import files to sequelize and declared:

const model = sequelize.import(path.join(__dirname, file))

                             ^

返回以下类型错误

TypeError: sequelize.import is not a function

然后,将代码编辑为

var model = require(path.join(__dirname, file))(sequelize, Sequelize);

                                         ^

那么错误是:

TypeError: require(...) is not a function

我认为这是导入东西的错误....

I think it is the error in importing stuff....

这是我的整个文件代码:

Here is my whole file code:

const fs = require('fs');

const path = require('path');

const Sequelize = require('sequelize');

const config = require('../config/config');

const db = {}

var __dirname = path.resolve();


const sequelize = new Sequelize(
    config.db.database,
    config.db.user,
    config.db.password,
    config.db.options
)


fs

    .readdirSync(__dirname)

    .filter((file) =>
        file !== 'index.js'
    )

    .forEach((file) => {

        //const model = sequelize.import(path.join(__dirname, file))

        var model = require(path.join(__dirname, file))(sequelize, 
Sequelize);

        db[model.name] = model

    })


db.sequelize = sequelize
db.Sequelize = Sequelize

module.exports = db

推荐答案

错误是使用 sequelize 导入对象引起的.相反,您应该使用 Node 内置的 CommonJS require 函数.因此,在您的 models/index.js 中更改这一行:

The error is caused by using the sequelize import object. Instead you should use Node's built in CommonJS require function. So change this line in your models/index.js:

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

到:

const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes)

如果您觉得更容易,您也可以重新生成 models 目录并在没有旧的 index.js 的情况下读取您的模型:

You can also just regenerate the models directory and readd your models without the old index.js if you find that easier:

mv models models.bak && sequelize init:models && mv models.bak/index.js models.bak/index.js.bak && mv models.bak/* models/ && rm models.bak

如果您在全局安装了 sequelize-cli,那一个 liner 将解决您的问题.如果你不这样做,你可以使用这个:

That one liner will fix your problem if you have sequelize-cli installed globally. If you don't you can use this one:

npm i --save-dev sequelize-cli && mv models models.bak && npx sequelize init:models && mv models.bak/index.js models.bak/index.js.bak && mv models.bak/* models/ && rm models.bak

您可能还需要更新您的配置文件夹.我使用 JavaScript 配置来注入 ENV,所以我不得不添加更改我的 const config = require(... 行来反映这一点.如果你使用了我的一个衬垫你的旧 如果您需要从中获取任何自定义内容,models/index.js 文件现在位于 index.js.bak.

You may also need to update your config folder. I use a JavaScript config to inject ENVs, so I had to add to change my const config = require(... line to reflect that. If you used one of my one liners your old models/index.js file is now at index.js.bak if you need to grab any custom stuff from it.

这篇关于sequelize.import 不是函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆