Hot*_*pin 27 node.js sequelize.js
我是新来的表达。
我想导入文件进行续集并声明:
const model = sequelize.import(path.join(__dirname, file))
^
Run Code Online (Sandbox Code Playgroud)
它返回以下类型错误
TypeError: sequelize.import is not a function
Run Code Online (Sandbox Code Playgroud)
然后,将代码编辑为
var model = require(path.join(__dirname, file))(sequelize, Sequelize);
^
Run Code Online (Sandbox Code Playgroud)
然后错误是:
TypeError: require(...) is not a function
Run Code Online (Sandbox Code Playgroud)
我认为这是导入东西的错误....
这是我的整个文件代码:
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
Run Code Online (Sandbox Code Playgroud)
Dav*_*mer 71
该错误是由使用 sequelize 导入对象引起的。相反,您应该使用 Node 内置的 CommonJSrequire
函数。所以改变你的这一行models/index.js
:
const model = sequelize['import'](path.join(__dirname, file))
Run Code Online (Sandbox Code Playgroud)
到:
const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes)
Run Code Online (Sandbox Code Playgroud)
如果您发现更容易,您也可以重新生成models
目录并在没有旧的情况下读取您的模型index.js
:
mv models models.bak && sequelize init:models && mv models.bak/index.js models.bak/index.js.bak && mv models.bak/* models/ && rm models.bak
Run Code Online (Sandbox Code Playgroud)
如果您在全球安装了 sequelize-cli,那一个 liner 将解决您的问题。如果你不这样做,你可以使用这个:
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
Run Code Online (Sandbox Code Playgroud)
您可能还需要更新您的配置文件夹。我使用 JavaScript 配置来注入 ENV,因此我必须添加以更改我的const config = require(...
行以反映这一点。如果您使用了我的单行之一,那么您的旧models/index.js
文件现在位于 index.js.bak 中,如果您需要从中获取任何自定义内容。
到目前为止,我能够通过将 package.json 中的 sequelize 模块版本降级到"sequelize": "^5.22.3",
. 如果它也固定在你身边,请告诉我。
编辑:任何续集版本< 6.0.0
都应该正常工作
归档时间: |
|
查看次数: |
19689 次 |
最近记录: |