Articles of 表示

如果路由参数匹配文件名如何从目录发送文件?

我有一个目录./Logs我从服务器logging文件,也显示给客户端的所有文件名,现在每个文件都有从客户端的下载选项,所以当用户调用下载的方法我发送文件名作为参数的服务器路由和寻找文件在提供的path使用forEach在./Logs目录我能够得到来自客户端的文件名,并能够打印为data所以直到这里它的工作,现在我看到错误的path必须是绝对的,任何想法如何我可以发送匹配的文件到客户端下载? angularFactory.js getFile:function(file_name){ return $http.get("/file?file_name="+file_name); } app.js app.get('/file', function (req, res) { var dir = './ditLogs'; var root = path.resolve('./ditLogs'); var fileName = req.query.file_name; var data; fs.readdir(dir, function(err, items) { items.forEach(function(file){ if(fileName === file){ data = file; console.log('DATA',data); res.setHeader('Content-Disposition', 'attachment; filename=' + data); res.sendFile(data, {root: root}); // res.sendFile(path.resolve(dir + '/' + data)); // res.sendFile(data, {root: […]

在node.js中的活动菜单项和表示

我正在使用node.js , express和express-handlebars 。 我在我的布局顶部有一个菜单。 在我的server.js ,我设置了所有页面 app.locals.pages = [ { title: 'Home', link: '/' }, { title: 'About', link: '/about' }, { title: 'Contact', link: '/contact' }, ]; 并在布局文件中打印页面 {{#each pages}} <li class="nav-item"> <a class="nav-link" href="{{link}}">{{title}}</a> </li> {{/each}} 但我想添加一个类到当前正在活动的菜单项。 如何保存3个菜单项中的哪一个是活动的?

如何创build一个全局函数来访问express.js中的数据库

我使用express.js,mongodb,ejs。 在导航栏中,有一个电子邮件图标,将显示新电子邮件的数量。 <%=newEmailCount%> 然后我需要添加这个newEmailCount到每一个路线。 Emails.count({userId: userId, new: true}) 我的问题是在express.js,我怎么能添加一个全局函数,可以执行每个路由?

添加方法要求?

req.user像req.assert和req.user一样将express-validation和passport方法添加到reqvariables中。 我知道我可以从一条路线里面做到这一点: app.get('/', (req,res,next) => { req.foo = bar; next(); } 但是,我怎样才能从库或外部模块呢?

Express路由 – 未经授权的error handling程序挂起错误路由

我正在使用从教程书中抓取的这段代码。 我实现了护照和应用程序的用户。使用检查UnauthorizedError是教程推荐的方法来检查检查未经授权的访问应用程序的受限制的部分。 每当我input一个错误的url,网站只是挂起,没有error handling,没有消息发送到浏览器。 我昨天花了很多时间检查我的路线,似乎没有明显的问题。 然后今天用一个小的预感,我注意到错误检查Unauthorized error ,瞧,error handling是一切都很好。 任何有关这里发生的事情的build议,以及如何正确实施这个错误检查? 注意:当有一个真正的未经授权的访问一个已知的url良好的路线,这个错误检查确实工作。 但是,即使login,它仍然没有收到错误的url。 app.use('/', routes); app.use('/api', routesApi); // catch 404 and forward to error handler app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); // error handlers // Catch unauthorised errors app.use(function (err, req, res, next) { if (err.name === […]

不提供静态文件

我想从“css”文件夹中提供css文件… 到目前为止我有这样的代码: app.use("/static", express.static(path.resolve(__dirname + "/../views/public/css"))); 我把/../往后走。 这是我的文件夹层次结构: 我去/static/styles.css – 服务器不能得到这个

Express EJS布局:res.locals不在布局中呈现

Express 4使用Express EJS布局模块。 我不知道如何标签,但我有这个问题。 我有一个路线文件,一个布局和一个视图。 我试图通过使用下面的代码的布局通过页面标题和页面描述 。 路线 router.get('/', function(req, res, next) { res.locals.meta = { title: 'Page Title', description: 'Page Description' }; res.render('pages/index', { header: 'Page Header' }); }); 布局 <!DOCTYPE html> <html dir="ltr" lang="en" class="no-js"> <head> <title><%= meta.title %></title> <meta name="description" content="<%= meta.description %>"> </head> <body> <%- body %> </body> </html> 视图 <h1 […]

ExpressJS中的ES6类有不同的performance?

为什么一个类在ExpressJS中有不同的performance? 举个例子: 随着expressJS LIB / Polygon.js: class Polygon { log (req, res) { var publicKey = req.params.publicKey; var query = req.query; console.log(this); // undefined var output = { publicKey :publicKey, query: query }; res.send(output); } } export {Polygon as default} app.js: import express from 'express'; import Polygon from './lib/Polygon'; var polygon = new Polygon(); app.get('/input/:publicKey', […]

variables在脚本标记中不可用

我正在使用passportjs在我的快速应用程序上进行用户身份validation。 但是我遇到了一个奇怪的问题: 在我的索引路线中,我使用user参数来渲染index.jade模板 router.get('/', function(req, res, next) { res.render('index', { user: req.user }); }); 现在在我的玉模板中,我有以下 block content if user h1 logged in #{user} script var shared_resources.user = user if !user h1 Not logged in 出于某种原因,该用户的条件传递正好在那里。 而且当我打印出用户对象login#{用户}它打印出来的细节罚款。 然而,在脚本标签内,我得到一个未捕获的引用,用户没有定义。 有谁知道这是为什么发生?

NodeJS中的window.locaton和window.pathname等效

NodeJS / ExpressJS中的window.location.protocol和window.location.host等价于什么? 我正尝试使用第三方API将urlredirect到我的网站。