我使用backpack表达服务器。我发现一些后端代码有fs.readFile(路径),这些文件位于src / assets / *中,不包含构建路径。例如我使用sequelize和need阅读一些文件。
fs
.readdirSync(__dirname)
.filter(file => {
return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
})
.forEach(file => {
var model = sequelize['import'](path.join(__dirname, file));
db[model.name] = model;
});
我想知道应该如何管理这些文件,因为它们会丢失文件丢失错误。我有一些想法
我需要动态读取js文件,因此第一个解决方案需要一些刺激性的扩展修改。 其次我们可能不再需要背包,所以我们有更好的选择第4。 第三个是合理的,但有些代码需要重写,如果有很多文件,那么检查它们并不容易。
你有更好的解决方案吗?
答案 0 :(得分:0)
我解决了使用require.context在编译过程中处理动态需求模块的问题。
var context = require.context(__dirname ,false,/\.\/(?!index).*\.js$/)
context.keys().forEach(
(file) => {
if (!sequelize.importCache[file]) {
let modelDefine = context(file)
if (typeof modelDefine === 'object') {
// ES6 module compatibility
modelDefine = modelDefine.default
}
var model = modelDefine(sequelize, Sequelize.DataTypes)
sequelize.importCache[file] = model
db[model.name] = model
}
}
)
这不需要定位资产,因为这些模块捆绑了构建的文件。