【发布时间】:2016-02-25 03:47:02
【问题描述】:
使用 Node.js、Express 和 Mongoose,我使用以下代码在多个子目录中同步提供多个静态文件(运行良好):
fs.readdirSync(__dirname + "/../../../np-site/themes/default/client/")
.forEach(function (dir) {
app.use(express.static(__dirname +
"/../../../np-site/themes/default/client/" + dir)
);
});
但是,根据数据库条目值,部分 url 必须是动态的:
express.static(__dirname + "/../../../np-site/themes/" + theme + "/client/" + dir)
我尝试了几种不同的方法,但无济于事。以下是我做的第一次尝试,当时对我来说最有意义(App模型是一个只能更新和检索的单一对象):
App.find(function (err, appSettings) {
fs.readdirSync(__dirname + "/../../../np-site/themes/" + appSettings[0].theme +
"/client/").forEach(function (dir) {
app.use(express.static(__dirname + "/../../../np-site/themes/" +
appSettings[0].theme + "/client/" + dir)
);
});
});
但这不起作用,因此不会提供静态文件。
我需要访问的对象可用(通过console.log 发现),但有些地方不对。
浏览器控制台确实返回了一条罕见的错误消息,指出文件的 MIME 类型 (CSS) 不正确,但我相信这是因为应用程序找不到正确的目录(完全删除该方法具有相同的结果)。
我认为它与 Mongoose 方法中的 app.use 有关,但我不确定。
有人可以为这个沮丧的灵魂提供一些启示吗?我觉得我好像走错了路。
【问题讨论】:
-
你的路径不同(
np-sitevssite),这是为什么? -
只是一个错字,因为我正在格式化代码以放置在这里。我已经编辑以修复错字,所以它是有道理的。
标签: javascript node.js mongodb express mongoose