gpt4 book ai didi

javascript - Sequelize : cannot find module (Model)

转载 作者:行者123 更新时间:2023-12-01 02:28:47 25 4
gpt4 key购买 nike

我有一个启用了 Sequelize 和 Webpack 的 Node 环境。

这是 Webpack 生成我的构建的路径:

./bin/builds.js

这是我使用 Sequelize CLI 生成模型的路径:

./src/models

在此文件夹中有我的模型和一个包含 Sequelize 生成的脚本的索引文件。该脚本获取所有模型并导出它们,但在我的例子中它不起作用。

这是错误:

Error: Cannot find module '/Library/WebServer/Documents/private/my-project/bin/src/models/currency.js'

当模型位于 /my-project/src 中时,脚本尝试获取构建路径 (/bin/) 中的模型。

我通过编辑 index.js 中的以下行解决了这个问题:

var model = Sequelize['import'](path.join(__dirname, file));

进入:

var model = Sequelize['import'](path.join('../'+__dirname, file));

但我想找到更好的方法来修复它,因为通过修复index.js,我认为该错误会在其他文件上再次发生。

这是我的 webpack 配置:

const webpack = require('webpack');
const path = require('path');
const fs = require('fs');
const nodeModules = {};


fs.readdirSync(path.resolve(__dirname, 'node_modules'))
.filter(function(x) {
return ['.bin'].indexOf(x) === -1;
})
.forEach(function(mod) {
nodeModules[mod] = 'commonjs ' + mod;
});

module.exports =

{
name: 'server',
target: 'node',
entry: './app.js',
output: {
path: __dirname+'/bin/',
publicPath: '/',
filename: 'server.js'
},
node: {
__filename: true,
__dirname: true
},
externals: [nodeModules],
module: {
loaders: [
{ test: /\.js$/,
loaders: [
'babel-loader'
]
},
{ test: /\.json$/, loader: 'json-loader' },
]
}
};

注意:我已经尝试将 publicPath 替换为 '/' 但它不起作用。

最佳答案

我遇到了同样的问题,我的解决方案是手动将模型导入index.js

'use strict'

var Sequelize = require('sequelize')
var env = process.env.NODE_ENV || 'development'
var config = require(__dirname + '/../config/config.json')[env]
var db = {}

if (config.use_env_variable) {
var sequelize = new Sequelize(process.env[config.use_env_variable], config)
} else {
var sequelize = new Sequelize(config.database, config.username, config.password, config)
}

const models = [
require('./Person')(sequelize, Sequelize),
require('./Animal')(sequelize, Sequelize)
]
models.forEach(model => {
db[model.name] = model
})

models.forEach(model => {
if (db[model.name].associate) {
console.log('entered', model.name)
db[model.name].associate(db)
}
})

db.sequelize = sequelize
db.Sequelize = Sequelize

module.exports = db

关于javascript - Sequelize : cannot find module (Model),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48485639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com