Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js,Express,Jade-错误:Can';t在发送邮件后设置邮件头_Node.js_Express_Pug - Fatal编程技术网

Node.js,Express,Jade-错误:Can';t在发送邮件后设置邮件头

Node.js,Express,Jade-错误:Can';t在发送邮件后设置邮件头,node.js,express,pug,Node.js,Express,Pug,我在尝试使用Jade生成HTML页面时遇到以下错误。还有其他人经历过这个问题吗。我在下面指出了错误的确切原因 错误 Error: Can't set headers after they are sent. at ServerResponse.OutgoingMessage.setHeader (http.js:644:11) at ServerResponse.res.setHeader (/Users/dereklo/node_modules/express/node_mod

我在尝试使用Jade生成HTML页面时遇到以下错误。还有其他人经历过这个问题吗。我在下面指出了错误的确切原因

错误

Error: Can't set headers after they are sent.
    at ServerResponse.OutgoingMessage.setHeader (http.js:644:11)
    at ServerResponse.res.setHeader (/Users/dereklo/node_modules/express/node_modules/connect/lib/patch.js:59:22)
    at ServerResponse.res.set.res.header (/Users/dereklo/node_modules/express/lib/response.js:475:10)
    at ServerResponse.res.contentType.res.type (/Users/dereklo/node_modules/express/lib/response.js:350:15)
    at ServerResponse.res.send (/Users/dereklo/node_modules/express/lib/response.js:111:14)
    at res.render.fn (/Users/dereklo/node_modules/express/lib/response.js:672:10)
    at Object.exports.render (/Users/dereklo/node_modules/jade/lib/jade.js:216:5)
Node.js/Express/Jade源代码

var http = require('http'),
    express = require('express'),
    jade = require('jade'),
    url = require('url'),
    jsdom = require('jsdom'),
    child_proc = require('child_process'),
    w,
    h,
    scripts = ["/Users/dereklo/Node/pie/d3.min.js",
                "/Users/dereklo/Node/pie/d3.v2.js",
               "/Users/dereklo/Node/pie/d3.layout.min.js",
               "/Users/dereklo/Node/pie/RadialScriptMobileServ.js",
               "/Users/dereklo/Node/pie/RadialScriptMobile.js",
               "/Users/dereklo/Node/pie/canvg.js"];

      //scripts = ["./d3.v2.js",
        //         "./d3.layout.min.js",
          //       "./pie.js"]

    htmlStub = '<!DOCTYPE html><div id="RadialScriptMobileServ"></div>',
   querystring = require("querystring"),
    fs = require("fs"),
    formidable = require("formidable"),
    path = require('path'),
    request = require('request')
    svgsrc = '';



//create an app server
var app = require('express').createServer();
//set path to the views (template) directory
app.set('views', __dirname + '/views');
//set path to static files
app.use(express.static(__dirname + '/../public'));
//handle GET requests on /
app.get('/', function(req, res){



 res.writeHead(200, {'Content-Type': 'text/plain'});

  w = (url.parse(req.url, true).query['width']);
  h = (url.parse(req.url, true).query['height']);

console.log("width: ",w);
console.log("height: ",h);

request("http://dcaps-staging.media.mit.edu:8080/api/reality_analysis_service/get_reality_analysis_data?document_key=radialData&bearer_token=8e2f9e3129", function (err, result, json) {
  json = JSON.parse(json);

   console.log("my radial data: ",json.radialData.data);


    jsdom.env({features:{QuerySelector:true}, html:htmlStub, scripts:scripts, done:function(errors, window) {

    svgsrc = window.insertRadial("#RadialScriptMobileServ",w,h,json).innerHTML;
    console.log(svgsrc);
       res.render('/Users/dereklo/Node/pie/Jade_radial.jade', {pageTitle: 'Franz Enzenhofer'});   // ERROR OCCURRING HERE!


             //  res.write(svgsrc);
                res.end();

     }})
    })

});
//listen on localhost:3000
app.listen(3000);

//console.log('Pie SVG server running at http://127.0.0.1:3000/');
var http=require('http'),
express=require('express'),
jade=需要(“jade”),
url=require('url'),
jsdom=require('jsdom'),
子进程=需要(“子进程”),
W
H
scripts=[“/Users/dereklo/Node/pie/d3.min.js”,
“/Users/dereklo/Node/pie/d3.v2.js”,
“/Users/dereklo/Node/pie/d3.layout.min.js”,
“/Users/dereklo/Node/pie/RadialScriptMobileServ.js”,
“/Users/dereklo/Node/pie/RadialScriptMobile.js”,
“/Users/dereklo/Node/pie/canvg.js”];
//scripts=[”/d3.v2.js“,
//“/d3.layout.min.js”,
//“/pie.js”]
HTMLSUB=“”,
querystring=require(“querystring”),
fs=要求(“fs”),
强大=需要(“强大”),
path=require('path'),
请求=要求('请求')
svgsrc=“”;
//创建应用服务器
var app=require('express')。createServer();
//设置视图(模板)目录的路径
app.set('views','u dirname+'/views');
//设置静态文件的路径
app.use(express.static(_dirname+'/../public');
//处理上的GET请求/
app.get('/',函数(req,res){
res.writeHead(200,{'Content-Type':'text/plain'});
w=(url.parse(req.url,true.query['width']);
h=(url.parse(req.url,true.query['height']);
原木(“宽度:”,w);
控制台日志(“高度:”,h);
请求(“http://dcaps-staging.media.mit.edu:8080/api/reality_analysis_service/get_reality_analysis_data?document_key=radialData&bearer_token=8e2f9e3129,函数(错误、结果、json){
json=json.parse(json);
log(“我的径向数据:”,json.radialData.data);
env({features:{QuerySelector:true},html:htmlsub,scripts:scripts,done:function(错误,窗口){
svgsrc=window.insertRadial(#RadialScriptMobileServ),w,h,json.innerHTML;
控制台日志(svgsrc);
res.render('/Users/dereklo/Node/pie/Jade_radial.Jade',{pageTitle:'Franz Enzenhofer'});//此处发生错误!
//res.write(svgsrc);
res.end();
}})
})
});
//在localhost:3000上侦听
app.listen(3000);
//console.log('Pie SVG服务器在运行http://127.0.0.1:3000/');

你可以用两种方法来做。在应用程序上方添加另一条路由。获取(/…)如下:

// global controller
app.get('/*',function(req,res,next){
    res.header('Content-Type': 'text/plain' , 0 );
    next(); // http://expressjs.com/guide.html#passing-route control
});
或者,您可以将中间件功能添加到现有路由中

addToHeader = function (req, res, next) {
  console.log("add to header called ... " + req.url);
  res.header('Content-Type': 'text/plain', '0');
  next();
}
and then change your routes to sth like this:

app.get('/', addToHeader, function(req,res){
  var stuff = { 'title': 'blah' };
  res.render('mytemplate',stuff);
});

我的问题是我需要删除:

res.writeHead(200, {'Content-Type': 'text/plain'});
现在它工作得很好。我希望这将帮助其他偶然发现这篇文章的人…

当使用res.render()时,您不需要手动处理响应(res.end()、res.writeHead()等)