Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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 ClientJade-执行jade.render()时出现问题_Node.js_Pug - Fatal编程技术网

Node.js ClientJade-执行jade.render()时出现问题

Node.js ClientJade-执行jade.render()时出现问题,node.js,pug,Node.js,Pug,我正在开发的Node.js应用程序的客户端代码中遇到了问题。 这背后的想法是在套接字接收到事件时立即更新浏览器 这是客户端上的脚本块: script(src='/scripts/jadeTemplate.js') script(src='/socket.io/socket.io.js') script(type='text/javascript') var socket = io.connect(); socket.on('obj', function(obj) { var ne

我正在开发的Node.js应用程序的客户端代码中遇到了问题。
这背后的想法是在套接字接收到事件时立即更新浏览器

这是客户端上的脚本块:

script(src='/scripts/jadeTemplate.js')
script(src='/socket.io/socket.io.js')
script(type='text/javascript')
  var socket = io.connect();
  socket.on('obj', function(obj) {
    var newsItem = document.createElement("item");
    jade.render(newsItem, 'objTemplate', { object: obj });
    $('#newsfeed').prepend(newsItem);
    alert(obj);
  });
alert()
放在
jade.render()
之前时,它会发出警报,但如果在之后插入,它不会执行(因此,我认为这是
jade.render()的问题)

这是objTemplate.jade,参见第7行:

p #{object}
// That's it.
这是app.js中的一个相关片段:

var server = dgram.createSocket('udp4');
server.bind(41234);
server.on('message', function(buf, rinfo) {
    isOnline = true;
    var message = buf.toString();
    io.sockets.emit('obj', message);
});

更新:

/public/scripts/jadeTemplate.js
,对于一个问题来说,这个片段太长了


如果我需要提供更多的代码片段或文件,请告诉我。:)

模板不需要属性
对象
,它需要
对象
。试试这个:

socket.on('obj', function(obj) {
    var newsItem = document.createElement("item");
    jade.render(newsItem, 'objTemplate', { obj: obj }); // changed object to obj
    $('#newsfeed').prepend(newsItem);
    alert(obj);
});

显示它在工作。如果将属性更改回
对象
,控制台中将出现javascript错误。

您的模板不需要属性
对象
,它需要
obj
。试试这个:

socket.on('obj', function(obj) {
    var newsItem = document.createElement("item");
    jade.render(newsItem, 'objTemplate', { obj: obj }); // changed object to obj
    $('#newsfeed').prepend(newsItem);
    alert(obj);
});

显示它在工作。如果您将属性更改回
object
,控制台中将出现javascript错误。

您可以发布jadeTemplate.js吗?添加了。我觉得问题本身太长了,所以我链接到了一个Pastebin粘贴,如果可以的话。你能发布jadeTemplate.js吗。我觉得问题本身太长了,所以我链接到了一个Pastebin粘贴,如果可以的话。令人惊叹的!这就是问题所在。我不确定为什么要更改标识符,因为我担心
obj
键也会被解释为标识符,脚本会尝试传递
obj
两次,而不是创建一个名为“obj”的属性,该属性的值为
obj
。不管怎么说,它现在起作用了。再次感谢,@Trevor Dixon:)太棒了!这就是问题所在。我不确定为什么要更改标识符,因为我担心
obj
键也会被解释为标识符,脚本会尝试传递
obj
两次,而不是创建一个名为“obj”的属性,该属性的值为
obj
。不管怎么说,它现在起作用了。再次感谢,@Trevor Dixon:)