我是Node.js的学习者.
因此,可以尝试获取以下JSON对象:
$ curl -i -X GET http://echo.jsontest.com/key/value/anotherKey/anotherValue
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Type: application/json; charset=ISO-8859-1
Date: Wed, 30 Oct 2013 22:19:10 GMT
Server: Google Frontend
Cache-Control: private
Alternate-Protocol: 80:quic,80:quic
Transfer-Encoding: chunked
{
"anotherKey": "anotherValue",
"key": "value"
}
$
Run Code Online (Sandbox Code Playgroud)
有没有办法在使用node或express的服务器的响应中生成完全相同的主体?显然,可以设置标头并指示响应的内容类型将是"application/json",但是有不同的方式来编写/发送对象.我经常使用的那个是使用以下形式的命令:
response.write(JSON.stringify(anObject));
Run Code Online (Sandbox Code Playgroud)
然而,这有两点可以说是好像是"问题":
另一个想法是使用命令:
response.send(anObject);
Run Code Online (Sandbox Code Playgroud)
这似乎是基于curl的输出发送一个JSON对象,类似于上面的第一个例子.但是,当在终端上再次使用卷曲时,在身体的末端没有新的线条字符.那么,如何使用node或node/express在最后附加一个新行字符来实际记下这样的内容?
如何在不使用第三方库的情况下下载带有Node.js的文件?
我不需要任何特别的东西.我只想从给定的URL下载文件,然后将其保存到给定的目录中.
这可能是一个非常基本的问题,但我根本就没有得到它.使用Express.js创建应用程序和启动应用程序侦听端口1234 之间的区别是什么,例如:
var express = require('express');
var app = express();
//app.configure, app.use etc
app.listen(1234);
Run Code Online (Sandbox Code Playgroud)
并添加一个http服务器:
var express = require('express');
var http = require('http');
var app = express();
var server = http.createServer(app);
//app.configure, app.use etc
server.listen(1234);
Run Code Online (Sandbox Code Playgroud)
有什么不同?
如果我导航到http://localhost:1234,那么我得到相同的输出.
我正在使用快递4.0,我知道身体解析器已被取出快递核心,我使用推荐的替代品,但我得到了
body-parser deprecated bodyParser: use individual json/urlencoded middlewares server.js:15:12
body-parser deprecated urlencoded: explicitly specify "extended: true" for extended parsing node_modules/body-parser/index.js:74:29
我在哪里可以找到这个假设的中间件?或者我不应该收到此错误?
var express = require('express');
var server = express();
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var passport = require('./config/passport');
var routes = require('./routes');
mongoose.connect('mongodb://localhost/myapp', function(err) {
if(err) throw err;
});
server.set('view engine', 'jade');
server.set('views', __dirname + '/views');
server.use(bodyParser());
server.use(passport.initialize());
// Application Level Routes
routes(server, passport);
server.use(express.static(__dirname + '/public'));
server.listen(3000);
Run Code Online (Sandbox Code Playgroud) 我正在尝试让HTTPS在express.js上运行节点,我无法弄明白.
这是我的app.js代码.
var express = require('express');
var fs = require('fs');
var privateKey = fs.readFileSync('sslcert/server.key');
var certificate = fs.readFileSync('sslcert/server.crt');
var credentials = {key: privateKey, cert: certificate};
var app = express.createServer(credentials);
app.get('/', function(req,res) {
res.send('hello');
});
app.listen(8000);
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它似乎只响应HTTP请求.
我写了简单的node.js基于香草的HTTPS应用程序:
var fs = require("fs"),
http = require("https");
var privateKey = fs.readFileSync('sslcert/server.key').toString();
var certificate = fs.readFileSync('sslcert/server.crt').toString();
var credentials = {key: privateKey, cert: certificate};
var server = http.createServer(credentials,function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
});
server.listen(8000);
Run Code Online (Sandbox Code Playgroud)
当我运行这个应用程序时,它会响应HTTPS请求.请注意,我不认为fs上的toString()结果很重要,因为我已经使用了两者的组合而仍然没有es …
在Ubuntu中它非常简单; 我可以运行应用程序:
$ NODE_ENV=production node myapp/app.js
Run Code Online (Sandbox Code Playgroud)
但是这不适用于Windows.是否有配置文件,我可以设置属性?
如何从module.exports声明中的另一个函数中调用函数?
这是一些简化的代码.
在我的app.js中,我执行以下操作:
var bla = require('./bla.js');
console.log(bla.bar());
Run Code Online (Sandbox Code Playgroud)
而在bla.js里面是
module.exports = {
foo: function (req, res, next) {
return ('foo');
},
bar: function(req, res, next) {
this.foo();
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试foo从函数中访问该函数bar,我得到:
TypeError: Object # has no method 'foo'
如果我改成this.foo()只是foo()我得到:
ReferenceError: foo is not defined
您如何解释Passport序列化和反序列化方法的工作流程.
user.id去哪儿passport.serializeUser打电话?
我们正在呼吁passport.deserializeUser它在哪里适合工作流程?
// used to serialize the user for the session
passport.serializeUser(function(user, done) {
done(null, user.id);
// where is this user.id going? Are we supposed to access this anywhere?
});
// used to deserialize the user
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
Run Code Online (Sandbox Code Playgroud)我仍然试图绕过它.我有一个完整的工作应用程序,并没有遇到任何类型的错误.
我只是想了解这里到底发生了什么?
任何帮助表示赞赏.
我已将代码缩减为我可以制作的最简单的express-js应用程序:
var express = require("express"),
app = express.createServer();
app.use(express.static(__dirname + '/styles'));
app.listen(3001);
Run Code Online (Sandbox Code Playgroud)
我的目录看起来像这样:
static_file.js
/styles
default.css
Run Code Online (Sandbox Code Playgroud)
然而,当我访问时,http://localhost:3001/styles/default.css我收到以下错误:
Cannot GET / styles /
default.css
Run Code Online (Sandbox Code Playgroud)
我正在使用express 2.3.3和node 0.4.7.我究竟做错了什么?
express ×10
node.js ×10
download ×1
fs ×1
httpresponse ×1
https ×1
javascript ×1
json ×1
middleware ×1
passport.js ×1
redis ×1
server ×1