我有一个Node.js / Express.js应用程序运行在我的服务器上,只能在端口3000上工作,我试图找出原因。 这是我发现的: 没有指定一个端口( app.listen() ),应用程序运行,但网页不加载。 在端口3001( app.listen(3001) )或任何其他未使用的端口上,应用程序将运行,但网页无法加载。 在端口2999,该应用程序抛出一个错误,因为别的东西正在使用该端口。 在端口3000,应用程序运行,网页加载正常。 我知道快速应用程序默认为端口3000.但奇怪的是,我的应用程序只运行时,我明确地使其在端口3000上运行( app.listen(3000) )。 我在/usr/bin/express第220行find了这个: app.set(\'port\', process.env.PORT || 3000); 这是按照前面的说法来做的:将端口设置为指定的值,如果没有指定则将端口设置为3000。 我怎样才能使我的应用程序工作在不同的端口,如8080或3001? 谢谢! 编辑:代码示例(非常简单的节点/快速应用程序) var express = require("express"); var app = express(); app.get('/', function(req, res){ res.send('hello world'); }); // Only works on 3000 regardless of what I set environment port to or how I set […]
我有一个function来检索用户的configuration文件。 app.get('/api/user/profile', function (request, response) { // Create the default error container var error = new Error(); var User = db.User; User.find({ where: { emailAddress: request.user.username} }).then(function(user) { if(!user) { error.status = 500; error.message = "ERROR_INVALID_USER"; error.code = 301; return next(error); } // Build the profile from the user object profile = { "firstName": user.firstName, […]
最近我开始使用MongoDB和Nodejs上的Mongoose。 当我使用$or condition和_id字段的Model.find方法时,Mongoose无法正常工作。 这不起作用: User.find( { $or:[ {'_id':param}, {'name':param}, {'nickname':param} ]}, function(err,docs){ if(!err) res.send(docs); }); 顺便说一句,如果我删除'_id'部分,这是否工作! User.find( { $or:[ {'name':param}, {'nickname':param} ]}, function(err,docs) { if(!err) res.send(docs); }); 而在MongoDB shell中,两者都正常工作。
所以我对Node.js的工作原理有了一个了解:它有一个接收事件的单个侦听器线程,然后将其委托给一个工作池。 工作线程完成工作后通知监听者,然后监听者将响应返回给调用者。 我的问题是:如果我在Node.js中站起来一个HTTP服务器,并且在我的一个路由事件(比如“/ test / sleep”)上调用sleep,整个系统就会停止。 即使是单一的监听器线程。 但我的理解是,这个代码正在工作池上发生。 现在,相比之下,当我使用Mongoose与MongoDB交谈时,数据库读取是一个昂贵的I / O操作。 节点似乎能够将工作委托给线程,并在完成时接收callback; 从数据库加载所花的时间似乎不会阻塞系统。 Node.js如何决定使用线程池线程与侦听器线程? 为什么我不能编写睡眠事件代码,只能阻塞线程池线程?
我正在尝试使用nodejs和request [2]向Google QPX Express API [1]发出HTTP POST请求。 我的代码如下所示: // create http request client to consume the QPX API var request = require("request") // JSON to be passed to the QPX Express API var requestData = { "request": { "slice": [ { "origin": "ZRH", "destination": "DUS", "date": "2014-12-02" } ], "passengers": { "adultCount": 1, "infantInLapCount": 0, […]
我如何监视Node.js的内存使用情况?
作为node.js环境和哲学的全新手段,我想回答几个问题。 我已经下载了用于Windows安装程序的node.js以及节点包pipe理器。当前正在使用Windows Cmd提示符来运行nodejs应用程序。 cls将在命令提示符下清除命令窗口或错误。 有没有相当于node.js? console.clear不存在;(或以其他forms做? 我通过下面的代码创build了一个服务器 var http = require("http"); http.createServer(function (request, response) { response.writeHead(200, { "Content-Type": "text/html" }); response.write("Hello World"); console.log("welcome world")response.end(); }).listen(9000, "127.0.0.1"); 我改变了下面的代码,并刷新浏览器,发现内容types不会改变,我怎么才能看到更改? var http = require("http"); http.createServer(function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); console.log("welcome world") response.end(); }).listen(9000,"127.0.0.1");
我从socket.io + node.js开始,我知道如何在本地发送消息并广播socket.broadcast.emit()函数: – 所有连接的客户端收到相同的消息。 现在,我想知道如何发送一个私人消息到一个特定的客户端,我的意思是一个私人聊天2人(客户端到客户端stream)之间的套接字。 谢谢。
在新版本的express上有一些中间件的变化,我在这个问题上的一些其他post的代码做了一些改变,但我不能得到任何东西坚持。 我们已经事先做好了工作,但是我不记得是什么改变了。 throw new TypeError('Router.use() requires middleware function but got a ^ TypeError: Router.use() requires middleware function but got a Object node ./bin/www js-bson: Failed to load c++ bson extension, using pure JS version js-bson: Failed to load c++ bson extension, using pure JS version /Users/datis/Documents/bb-dashboard/node_modules/express/lib/router/index.js:438 throw new TypeError('Router.use() requires middleware function but got a […]
假设你想安装依赖关系dep-1和dep-2的库lib-a 。 如果lib-a在package.json中声明使用dep-2的版本已过期(比如刚刚发布的节点0.8.0上不起作用),但是有一个dep-2与节点0.8.0一起使用 – 分支名称node0.8.0 。 所以方程中的包是: git://github.com/user-a/lib-a git://github.com/user-b/dep-1 git://github.com/user-c/dep-2 git://github.com/user-c/dep-2#node0.8.0 有没有办法告诉NPM安装lib-a ,但使用dep-2#node0.8.0而不是dep-2 ? 使用NPM,您可以像这样安装一个特定的项目分支: npm install git://github.com/user-c/dep-2#node0.8.0 如果我要自定义lib-a的package.json,你可以告诉它使用dep-2#node0.8.0像这样: { "name": "lib-a", "dependencies": { "dep-1": ">= 1.5.0", "dep-2": "git://github.com/user-c/dep-2#node0.8.0" } } 通过修改package.json,你可以运行 npm install lib-a 它会安装节点0.8.0兼容dep-2分支。 但是,这需要我有权修改lib-a ,对于我的具体情况我没有。 从技术上讲,我可以fork lib-a ,并对package.json进行上述修改。 但在我的具体情况下, lib-a是另一个库的依赖项,所以我必须分叉引用它的项目,并且… 所以问题是,有没有办法告诉NPM安装lib-a ,并告诉它使用dep-2的node0.8.0分支? 像这样的东西: npm install lib-a –overrides dep-2:git://github.com/user-c/dep-2#node0.8.0 那将是真棒。 如果这是不可能的,那将是很好的知道,所以我可以准备自己必须叉/定制的项目链。