如何在Express中编写功能脚本

时间:2018-09-21 08:54:01

标签: javascript node.js express jsdom

我确实将console.log重定向到html,并且使这种情况有效。

将app.js清理干净,

var app = require('express')();
var http = require('http').Server(app);
var port = process.env.PORT || 3000;

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

http.listen(port, function(){
  console.log('listening on *:' + port);
});

和脚本位于html部分

<!doctype html>
<html>
  <head>
    <title>Example</title>
  </head>
  <body>
    <div id="log"></div>
  <script>
    (function () {
        if (!console) {
            console = {};
        }
        var old = console.log;
        var logger = document.getElementById('log');
        console.log = function (message) {
            if (typeof message == 'object') {
                logger.innerHTML += (JSON && JSON.stringify ? JSON.stringify(message) : String(message)) + '<br />';
            } else {
                logger.innerHTML += message + '<br />';
            }
        }
    })();

    setInterval(function() {
      console.log('X: ' + Math.random());
    }, 2000);
  </script>
  </body>
</html>

我需要更改方案,在该方案中可以将脚本放在app.js上。我做了一些研究,并指出了JSDOM。

-

但是功能部分不起作用。我收到ReferenceError:文档未定义。

注意:当我注释掉函数时,JSDOM显然成功了

在app.js中

var app = require('express')();
var http = require('http').Server(app);
var port = process.env.PORT || 3000;

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

http.listen(port, function(){
  console.log('listening on *:' + port);
});

var jsdom = require("jsdom").JSDOM;
jsdom.fromFile('./index.html').then(function(dom){
    let window = dom.window;
    document = window.document;
});

// (function () {
// if (!console) {
//     console = {};
// }
// var old = console.log;
// var logger = document.getElementById('log');
// console.log = function (message) {
//     if (typeof message == 'object') {
//         logger.innerHTML += (JSON && JSON.stringify ? JSON.stringify(message) : String(message)) + '<br />';
//     } else {
//         logger.innerHTML += message + '<br />';
//     }
// }
// })();

setInterval (function() {
 console.log('X: ' + Math.random());
 var logger = document.getElementById('log');
 console.log(logger.innerHTML);
}, 2000);

和index.html

<!doctype html>
<html>
  <head>
    <title>Example</title>
  </head>
  <body>
    <div id="log"></div>
  </body>
</html>

谢谢

0 个答案:

没有答案