Res.Render 不是 node.js 中的函数错误
Res.Render is not a function error in node.js
当我尝试 运行 我的 node.js 代码时,我在 Windows 10 命令提示符中收到 "res.render is not a function error"。
是什么导致了这个错误,我该如何摆脱它?
这是我的 .js 文件:
/*eslint-env node*/
//------------------------------------------------------------------------------
// node.js starter application for Bluemix
//------------------------------------------------------------------------------
// HTTP request - duas alternativas
var http = require('http');
var request = require('request');
// cfenv provides access to your Cloud Foundry environment
// for more info, see: https://www.npmjs.com/package/cfenv
var cfenv = require('cfenv');
//chama o express, que abre o servidor
var express = require('express');
// create a new express server
var app = express();
// serve the files out of ./public as our main files
app.use(express.static(__dirname + '/public'));
// get the app environment from Cloud Foundry
var appEnv = cfenv.getAppEnv();
// start server on the specified port and binding host
app.listen(appEnv.port, '0.0.0.0', function() {
// print a message when the server starts listening
console.log("server starting on " + appEnv.url);
});
app.get('/home1', function(res){
http.get('http://developers.agenciaideias.com.br/cotacoes/json', function(res){
var body = '';
res.on('data', function(chunk){
body += chunk;
});
res.on('end', function(){
var json = JSON.parse(body);
var cotacao = json["bovespa"]["cotacao"];
var CotacaoDolar= json["dolar"]["cotacao"];
var VariacaoDolar=json["dolar"]["variacao"];
var CotacaoEuro=json["euro"]["cotacao"];
var VariacaoEuro=json["euro"]["variacao"];
var Atualizacao=json["atualizacao"];
res.render('cotacao.jade',{title:'Hey', message:'Sua cotação foi de'});
});
});
});
错误:
我没有看到 jade 与您的 Express 应用挂钩的位置。为了 res.render()
了解 jade 模板,您必须将 jade 处理程序挂接到 Express 中。
如果 jade 安装正确,你应该可以将它挂接到 Express 中:
app.set('view engine', 'jade');
此外,您在与 res
相同的范围内命名了两个参数。更改属于 http.get()
的第二个的名称,这样您仍然可以访问更高范围的那个,即实际的 Express 响应对象。
app.get('/home1', function (res) {
http.get('http://developers.agenciaideias.com.br/cotacoes/json', function (res2) {
var body = '';
res2.on('data', function (chunk) {
body += chunk;
});
res2.on('end', function () {
var json = JSON.parse(body);
var cotacao = json["bovespa"]["cotacao"];
var CotacaoDolar = json["dolar"]["cotacao"];
var VariacaoDolar = json["dolar"]["variacao"];
var CotacaoEuro = json["euro"]["cotacao"];
var VariacaoEuro = json["euro"]["variacao"];
var Atualizacao = json["atualizacao"];
res.render('cotacao.jade', {
title: 'Hey',
message: 'Sua cotação foi de'
});
});
});
});
您正在处理两组 HTTP requests/responses。
您收到的一个:
app.get('/home1', function(res){
还有你正在制作的:
http.get('http://developers.agenciaideias.com.br/cotacoes/json', function(res){
… 但是你给了他们两个 相同的变量名 (res
) 所以一个屏蔽另一个并阻止你访问它。
更改其中一位的名称。
当我尝试 运行 我的 node.js 代码时,我在 Windows 10 命令提示符中收到 "res.render is not a function error"。
是什么导致了这个错误,我该如何摆脱它?
这是我的 .js 文件:
/*eslint-env node*/
//------------------------------------------------------------------------------
// node.js starter application for Bluemix
//------------------------------------------------------------------------------
// HTTP request - duas alternativas
var http = require('http');
var request = require('request');
// cfenv provides access to your Cloud Foundry environment
// for more info, see: https://www.npmjs.com/package/cfenv
var cfenv = require('cfenv');
//chama o express, que abre o servidor
var express = require('express');
// create a new express server
var app = express();
// serve the files out of ./public as our main files
app.use(express.static(__dirname + '/public'));
// get the app environment from Cloud Foundry
var appEnv = cfenv.getAppEnv();
// start server on the specified port and binding host
app.listen(appEnv.port, '0.0.0.0', function() {
// print a message when the server starts listening
console.log("server starting on " + appEnv.url);
});
app.get('/home1', function(res){
http.get('http://developers.agenciaideias.com.br/cotacoes/json', function(res){
var body = '';
res.on('data', function(chunk){
body += chunk;
});
res.on('end', function(){
var json = JSON.parse(body);
var cotacao = json["bovespa"]["cotacao"];
var CotacaoDolar= json["dolar"]["cotacao"];
var VariacaoDolar=json["dolar"]["variacao"];
var CotacaoEuro=json["euro"]["cotacao"];
var VariacaoEuro=json["euro"]["variacao"];
var Atualizacao=json["atualizacao"];
res.render('cotacao.jade',{title:'Hey', message:'Sua cotação foi de'});
});
});
});
错误:
我没有看到 jade 与您的 Express 应用挂钩的位置。为了 res.render()
了解 jade 模板,您必须将 jade 处理程序挂接到 Express 中。
如果 jade 安装正确,你应该可以将它挂接到 Express 中:
app.set('view engine', 'jade');
此外,您在与 res
相同的范围内命名了两个参数。更改属于 http.get()
的第二个的名称,这样您仍然可以访问更高范围的那个,即实际的 Express 响应对象。
app.get('/home1', function (res) {
http.get('http://developers.agenciaideias.com.br/cotacoes/json', function (res2) {
var body = '';
res2.on('data', function (chunk) {
body += chunk;
});
res2.on('end', function () {
var json = JSON.parse(body);
var cotacao = json["bovespa"]["cotacao"];
var CotacaoDolar = json["dolar"]["cotacao"];
var VariacaoDolar = json["dolar"]["variacao"];
var CotacaoEuro = json["euro"]["cotacao"];
var VariacaoEuro = json["euro"]["variacao"];
var Atualizacao = json["atualizacao"];
res.render('cotacao.jade', {
title: 'Hey',
message: 'Sua cotação foi de'
});
});
});
});
您正在处理两组 HTTP requests/responses。
您收到的一个:
app.get('/home1', function(res){
还有你正在制作的:
http.get('http://developers.agenciaideias.com.br/cotacoes/json', function(res){
… 但是你给了他们两个 相同的变量名 (res
) 所以一个屏蔽另一个并阻止你访问它。
更改其中一位的名称。