Node.js 将require.js与jsdom一起用于服务器端渲染
我有这一小段代码,需要将脚本标记添加到头部 它补充道 但问题是,它似乎没有在包含更多require语句的脚本中运行任何代码。当页面加载时,一切都正常运行,但我正在尝试进行服务器端渲染Node.js 将require.js与jsdom一起用于服务器端渲染,node.js,requirejs,jsdom,Node.js,Requirejs,Jsdom,我有这一小段代码,需要将脚本标记添加到头部 它补充道 但问题是,它似乎没有在包含更多require语句的脚本中运行任何代码。当页面加载时,一切都正常运行,但我正在尝试进行服务器端渲染 我应该使用绝对路径吗?我试着用http://127.0.0.1:6789/scripts/main.js 其他一切都一样,但似乎不起作用。可能有什么问题?看起来您等待脚本加载的时间不够长。尝试将超时设置为5000?我确实尝试过,但仍然不起作用。feautres在我看来不正确。功能?还是一样的问题:\ var ht
我应该使用绝对路径吗?我试着用http://127.0.0.1:6789/scripts/main.js 其他一切都一样,但似乎不起作用。可能有什么问题?看起来您等待脚本加载的时间不够长。尝试将超时设置为5000?我确实尝试过,但仍然不起作用。feautres在我看来不正确。功能?还是一样的问题:\
var html ='<!DOCTYPE html>\n'+
'<html>\n'+
' <head>\n'+
' <meta charset="utf-8" />\n'+
' <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">\n'+
' <title>foobunny rulez!</title>\n'+
' <link rel=\'stylesheet\' href=\'/styles/app.css\' />\n'+
' <script src="http://127.0.0.1:6789/scripts/lib/require.js"></script>\n'+
' </head>\n'+
' <body> \n'+
' <script> \n'+
' document.write("test");\n'+
' require([\'/scripts/config.js\']);\n'+
' require([\'/scripts/main.js\']);\n'+
' </script>\n'+
' </body>\n'+
'</html>';
var jsdom = require("jsdom");
jsdom.defaultDocumentFeatures = {
FetchExternalResources : ['script'],
ProcessExternalResources : ['script'],
MutationEvents : '2.0',
QuerySelector : false
}
var window = jsdom.jsdom(html, null, {
features: {
FetchExternalResources: ["script"],
ProcessExternalResources: ["script"]
}
}).createWindow();
window.addEventListener('load', function(){
setTimeout(function(){
res.send('<html>'+window.document.getElementsByTagName('html')[0].innerHTML)+'</html>';
}, 5000);
});