Sequelize 错误:在 Index.js 中未定义 defineCall

本教程将介绍Sequelize 错误:在 Index.js 中未定义 defineCall的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

Sequelize 错误:在 Index.js 中未定义 defineCall 教程 第1张

问题描述

我一直收到此续集错误

/node_modules/sequelize/lib/sequelize.js:508
this.importCache[path] = defineCall(this, DataTypes);
^
 TypeError: defineCall is not a function
 at module.exports.Sequelize.import (/node_modules/sequelize/lib/sequelize.js:508:32)
at/models/Index.js:16:33
at Array.forEach (native)
at Object.<anonymous> (/Users/vincentporta/Desktop/RCB_Classwork/cesarcell/models/Index.js:15:4)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)

我已将范围缩小到下面的 Index.js 文件中的注释代码

使用严格";

var fs  = require("fs");
var path= require("path");
var Sequelize = require("sequelize");
var config = require(path.join(__dirname, '..', 'config', 'config.json'))[env];
var sequelize = new Sequelize(config.database, config.username,  config.password, config);
var db  = {};

fs
  .readdirSync(__dirname)
  .filter(function(file) {
 return (file.indexOf(".") !== 0) && (file !== "index.js");
  })

下面这段注释的代码破坏了它//.forEach(函数(文件){//var model = sequelize.import(path.join(__dirname, file));//db[model.name] = 模型;//});

Object.keys(db).forEach(function(modelName) {
  if ("associate" in db[modelName]) {
 db[modelName].associate(db);
  }
});

db.sequelize = sequelize;
db.Sequelize = Sequelize;

module.exports = db;

有谁知道为什么会出现这个错误?

推荐答案

这通常意味着您正在尝试导入非 sequelize 对象.如果您的索引文件的名称是 Index.js 那么您需要在过滤器函数中更改它(第一个字母是大写)

return (file.indexOf(".") !== 0) && (file !== "Index.js");

因为它区分大小写.还要检查您的导入文件夹中是否没有任何其他未定义续集模型的文件.如果只是将它们添加到您的过滤器功能中.

好了关于Sequelize 错误:在 Index.js 中未定义 defineCall的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。