Res.Render不是node.js中的函数错误

Res.Render不是node.js中的函数错误

问题描述:

当我尝试运行node.js代码时,Windows 10命令提示符中出现res.render不是函数错误。

I am getting an "res.render is not a function error" in the Windows 10 Command Prompt when I try to run my node.js code.

什么导致此错误,我该如何摆脱它?

What is causing this error and how can I get rid of it?

这是我的.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'});
	
		
		});
	});
});

错误:

我没有看到你的Express应用程序挂在哪里。为了让 res.render()了解jade模板,你必须将一个jade处理程序挂钩到Express。

I don't see where jade is hooked into your Express app. In order for res.render() to know about jade templates, you have to hook a jade handler into Express.

如果正确安装了jade,你应该可以将它挂钩到Express:

If jade is installed properly, you should be able to do this to hook it into Express:

app.set('view engine', 'jade');

Express doc for this

此外,你有在与 res 相同的范围内命名两个参数。更改属于 http.get()的第二个名称,这样您仍然可以访问作为实际Express响应对象的更高范围的名称。

In addition, you have named two arguments in the same scope as res. Change the name of the second one that is part of the http.get() so you can still access the higher scoped one that is the actual Express response object.

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'
            });
        });
    });
});