我确实将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>
谢谢