Tag: 表示

用gulp运行一个命令来启动Node.js服务器

所以我使用的是gulp-exec( https://www.npmjs.com/package/gulp-exec ),它在阅读了一些文档后提到,如果我想运行一个命令,我不应该使用插件,使用我已经尝试使用下面的代码。 var exec = require('child_process').exec; gulp.task('server', function (cb) { exec('start server', function (err, stdout, stderr) { .pipe(stdin(['node lib/app.js', 'mongod –dbpath ./data'])) console.log(stdout); console.log(stderr); cb(err); }); }) 我试图让我的Node.js服务器和MongoDB启动。 这就是我想要完成的。 在我的terminal窗口,它抱怨我的 .pipe 不过,我是新来的吞咽,我认为这是你如何通过命令/任务。 任何帮助表示赞赏,谢谢。

在Express中,app.router究竟做了什么?

当我使用express二进制创build示例Express应用程序时,引导程序代码包含以下行: … var app = express(); … app.use(app.router); 我没有find关于app.router的很多内容。 我认为这是处理路由(app.get(),app.post()等)规则的中间件,但是当我移除app.use(app.router)时,这些规则也会被执行。 线。 那么这个中间件的确切用法是什么?

如何在node.js + express中捕获“响应结束”事件?

我想编写一个快速中间件函数,在响应的“结束”事件(如果存在)上设置侦听器。 目的是根据最终处理程序决定发送的http响应代码进行清理,例如logging响应代码和db事务的回滚/提交。 即,我希望这个清理对最终调用者是透明的。 我想快速地做下面的事情: 路由中间件 function (req, res, next) { res.on ('end', function () { // log the response code and handle db if (res.statusCode < 400) { db.commit() } else { db.rollback() } }); next(); } 路线: app.post ("/something", function (req, res) { db.doSomething (function () { if (some problem) { res.send (500); } […]

无法获取CSS文件

我的目录设置是这样的: app.js vews home.html css style.css 我的家庭档案是这样的: <html> <head> <title></title> <link rel="stylesheet" type="text/css" href="css/style.css" /> </head> <body> </body> </html> 我的应用程序是这样的: var io = require('socket.io'), url = require('url'), sys = require('sys'), express = require('express'), http=require('http'); var app = express(); var server = http.createServer(app); var socket = io.listen(server); app.engine('.html', require('ejs').__express); app.set('views', __dirname + '/views'); app.set('view engine', 'html'); […]

如何将智能感知文件导入到vsCode(Visual Studio代码)

我不确定我是否理解intellisense如何为微软的新的vsCode文本编辑器工作。 在“Great Code Editing Experience”标题下的文档中 ,它在节点全局variables__dir下面显示了一个警告,并提供了一个灯泡build议来添加对d.ts文件的引用,以便您可以获取节点的intellisense: 我有两个问题: 1 – 如何直接导入DefinitelyTyped文件(d.ts)(没有编辑器提示)或者我必须从github源文件中复制它们并将它们放在types目录中? 2 – 我可以获得具有打印定义的任何图书馆的智能感知吗? 我尝试了下面,但是当我inputexpress. 或when. ,我没有任何智慧。 但是,我确实得到节点智能感知。 /// <reference path="../typings/node/node.d.ts"/> /// <reference path="../typings/express/express.d.ts" /> var when = require('when') , express = require('express') , gulp = require('gulp')

MissingSchemaError:架构尚未注册模型“用户”

在我的models/user.js文件中: var mongoose = require('mongoose'); var Schema = mongoose.Schema; var userSchema = new Schema({ (define schema) }); … (save user) … (check password) … mongoose.model('User', userSchema); 而在我的router/index.js ,我有: var mongoose = require('mongoose'); var User = mongoose.model('User'); 这会引发错误: MissingSchemaError: Schema hasn't been registered for model "User". 但是,如果在user.js ,我(在最后一行) module.exports = mongoose.model('User', userSchema); 并在index.js我var User = require('../models/User'); […]

快速redirect所有的尾部斜杠

我正在使用Node.js和Express,我有以下路由: app.get('/', function(req,res){ locals.date = new Date().toLocaleDateString(); res.render('home.ejs', locals); }); function lessonsRouter (req, res, next) { var lesson = req.params.lesson; res.render('lessons/' + lesson + '.ejs', locals_lessons); } app.get('/lessons/:lesson*', lessonsRouter); function viewsRouter (req, res, next) { var controllerName = req.params.controllerName; res.render(controllerName + '.ejs', locals_lessons); } app.get('/:controllerName', viewsRouter); 我在我的课程页面上有一个Disqus小部件,我注意到一个奇怪的行为,当去myapp.com/lessons和myapp.com/lessons/我得到两个不同的页面(他们有一个评论,我以前在Disqus添加和另一个没有评论)。 有没有一种方法可以将我的所有url“封锁”为无斜线? 我试图添加strict routing标志来expression,但结果是一样的 谢谢

正确的方法来组织myapp / routes / *

使用最新的稳定的node.js和npmexpression,我创build了我的第一个快速项目。 默认生成的应用程序定义routes / index.js,其中包含呈现默认索引视图的单个路由。 我马上假设我可以添加其他.js文件到路线/文件夹,他们将被包括在内。 这没有泛滥。 只包含routes / index.js。 将其他路由添加到routes / index.js工作正常。 按照快递项目生成器提供的结构,定义和组织快递路线的正确方法是什么? 答案,解释了DailyJS的文章: 鉴于以下路线: app.get('/', function() {}); app.get('/users', function() {}); app.get('/users/:id', function() {}); …创build以下文件: routes/ ├── index.js ├── main.js └── users.js 然后,在routes / index.js里面: require('./main'); require('./users'); 对于每个新的相关路由组,在routes /中创build一个新文件,并从routes / index.js中require()。 将main.js用于不适合其他文件的路由。

如何在nodejs服务器中设置HTTP Keep-Alive超时

实际上,我正在对ExpressJS服务器进行一些负载testing,我发现服务器发送的响应包含一个“Connection:Keep-Alive”头文件。 据我所知,连接将保持打开,直到服务器或客户端发送“连接:closures”标题。 在某些实现中,“Connection:Keep-Alive”头部带有一个“Keep-Alive”头文件,用于设置连接超时以及通过此连接发送的连续请求的最大数量。 例如:“Keep-Alive:timeout = 15,max = 100” 在快速服务器上设置这些参数有没有办法(而且是相关的)? 如果没有,你知道ExpressJS如何处理这个? 编辑:经过一番调查后,我发现在节点标准http库中设置了默认的超时时间: socket.setTimeout(2 * 60 * 1000); // 2 minute timeout 为了改变这一点: var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end("Hello World"); }).on('connection', function(socket) { socket.setTimeout(10000); }).listen(3000); 无论如何,它仍然看起来有点奇怪,服务器不发送任何提示的客户端有关其超时。 编辑2:感谢josh3736的评论。 setSocketKeepAlive与HTTP保持活动不相关。 这是一个TCP级别的选项,允许您检测到连接的另一端已经消失。

在Express NodeJS的其他路由中调用已经定义的路由

我正在使用Express在node.js中编写Web应用程序。 我已经定义了一条路线如下: app.get("/firstService/:query", function(req,res){ //trivial example var html = "<html><body></body></html>"; res.end(html) }); 我如何从expression式中重用这条路线? app.get("/secondService/:query", function(req,res){ var data = app.call("/firstService/"+query); //do something with the data res.end(data); }); 我找不到API文档中的任何内容,而不愿意使用另一个类似“请求”的库,因为这似乎是kludgey。 我试图让我的应用尽可能模块化。 思考? 谢谢