EJS Node.JS Express – 超过1个参数的URL时的CSSpath问题

首先为我可怜的英语感到抱歉!

那么,我正在开发一个使用NodeJS / Express和EJS作为模板引擎的Web应用程序。

我目前正面临一个问题。

这是我的文件夹层次结构

App folder/ |___ server.js / |___ node_modules / |___ required / |___ bootstrap / |___ css / |___ font-awesome / |___ images / |___ views / |___ default.ejs |___ home.ejs |___ mission.ejs |___ mission / |___ create.ejs |___ delete.ejs 

这是我的server.jsconfiguration:

 // Setup le serveur http var app = express(); var code = 4567; ////// CONFIGURATION // Définit le chemin relatif pour tous les fichiers utilisés dans l'app app.use(express.static(__dirname)); console.log(__dirname + ""); app.set('views',__dirname + '/views'); app.get('/:app', function(req, res) { if (req.session.logged == false) { res.render('login.ejs'); }else{ if(api.page_exist(req.params.app)){ res.render('default.ejs', {app:req.params.app}); }else{ /*console.log("La page demandée n'existe pas"); */ res.redirect('/home'); } } }); app.get('/:app/:action', function(req,res){ if(api.page_folder_exist(req.params.app,req.params.action)){ console.log(__dirname); res.render('default.ejs', {app:req.params.app, action:req.params.action}); }else{ res.redirect('/'); } }); 

基本上,我有两个路线: /:app/我加载到模板default.ejs的价值,我包括app.ejs应用程序可以是“家”,“任务”等…此路线运作良好

其他路线是: /:app/:action其中:app定义文件夹,例如文件夹任务动作定义动作,例如创build 。 使用URL /mission/create包含default.ejs的模板/mission/create.ejs并显示它。

它的工作,但我有一个关于加载CSS的path的问题。 通过使用这个路由,浏览器试图得到: http://localhost:8333/mission/required/font-awesome-4.5.0/css/font-awesome.min.css而不是http://localhost:8333/required/font-awesome-4.5.0/css/font-awesome.min.css就像在第一个路由中一样。

这是我如何链接我的CSS文件:

 <link href="required/css/normalize.css" rel="stylesheet"> <link href="required/css/common.css" rel="stylesheet"> <link href="required/css/style.css" rel="stylesheet"> 

你有什么主意吗 ? 我认为这是关于我的路线configuration,但我找不到解决scheme。

看起来你可能想尝试这个。

Express按照您使用express.static中间件function设置静态目录的顺序查找文件。

要为express.static函数提供的文件创build虚拟path前缀(path实际上不存在于文件系统中),请为静态目录指定一个装载path,如下所示:

 app.use('/required', express.static('required')); 

这应该可能代替你的代码

 // Définit le chemin relatif pour tous les fichiers utilisés dans l'app app.use(express.static(__dirname)); 

现在,您可以从/静态path前缀加载公共目录中的文件。

例如:

 http://localhost:8333/required/bootstrap/somefile.css http://localhost:8333/required/css/somefile.css http://localhost:8333/required/font-awesome/somefile.css 

更多信息在这里