【发布时间】:2018-01-28 11:06:07
【问题描述】:
我有一个启用了 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 替换为 '/',但它不起作用。
【问题讨论】: