【问题标题】:Res.Render is not a function error in node.jsRes.Render 不是 node.js 中的函数错误
【发布时间】:2016-03-10 14:49:03
【问题描述】:

当我尝试运行我的 node.js 代码时,我在 Windows 10 命令提示符中收到“res.render 不是函数错误”。

是什么导致了这个错误,我该如何摆脱它?

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

错误:

【问题讨论】:

    标签: javascript node.js express pug ibm-cloud


    【解决方案1】:

    您正在处理两组 HTTP 请求/响应。

    您收到的一个:

    app.get('/home1', function(res){
    

    还有你正在制作的:

    http.get('http://developers.agenciaideias.com.br/cotacoes/json', function(res){
    

    ...但是您已为它们提供了相同的变量名 (res),因此一个会屏蔽另一个并阻止您访问它。

    更改其中一个的名称。

    【讨论】:

      【解决方案2】:

      我看不出 Jade 在您的 Express 应用程序中的哪个位置。为了让res.render() 了解翡翠模板,您必须将翡翠处理程序挂接到 Express 中。

      如果正确安装了jade,您应该可以将其挂接到Express中:

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

      Express doc for this.


      此外,您在与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'
                  });
              });
          });
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-05
        • 1970-01-01
        • 2019-06-09
        • 1970-01-01
        • 2017-12-07
        • 2019-08-02
        • 2021-05-01
        相关资源
        最近更新 更多