我正在尝试使用jsreport创建我的第一个报告。我遵循了documentation,但无法生成最简单的Hello世界。我试过了:npm install jsreport然后创建一个简单的服务器:var http = require('http');var jsreport = require('jsreport');http.createServer(function (req, res) { jsreport.render("<h1>Hello world</h1>").then(function(out) { out.stream.pipe(res); }).catch(function(e) { res.end(e.message); });}).listen(1337, '127.0.0.1');服务器正在端口1337上运行。但是,如果我尝试打开http://localhost:1337/,则什么也不会发生。我期待着Hello World的页面。在服务器端,我进入控制台:2018-02-17T10:55:16.009Z - info: Initializing [email protected] in development mode using configuration file: jsreport.config.json2018-02-17T10:55:16.011Z - info: Setting process based strategy for rendering. Please visit http://jsreport.net/learn/configuration for information how to get more performance.2018-02-17T10:55:16.013Z - info: Searching for available extensions in /home/jgr/WebstormProjects/GeoMasterBoard/server/2018-02-17T10:55:16.016Z - info: Extensions location cache not found, crawling directories我需要运行jsreport服务器还是该代码就足够了?我还尝试在documentation之后安装jsreport服务器。jsreport start之后,它将显示在控制台上:2018-02-17T10:42:46.013Z - info: Initializing [email protected] in development mode using configuration file: jsreport.config.json2018-02-17T10:42:46.015Z - info: Setting process based strategy for rendering. Please visit http://jsreport.net/learn/configuration for information how to get more performance.2018-02-17T10:42:46.023Z - info: Searching for available extensions in /home/jgr/WebstormProjects/GeoMasterBoard/server/2018-02-17T10:42:46.025Z - info: Extensions location cache not found, crawling directories但是,当我尝试打开http://localhost:5488/时,什么也没有发生。如果我这样做:nmap -p 5488 localhost遮篷是:PORT STATE SERVICE5488/tcp closed unknown我想念什么?我正在Ubuntu 16.04上使用node.js v8.1.2。 最佳答案 您的代码无法正常工作,原因如下:当您在http://localhost:1337/上打开浏览器时,您的浏览器实际上在发出3个不同的请求(1-> http://localhost:1337/,2-> http://localhost:1337/favicon.ico,3-> http://localhost:1337/robots.txt),而不仅仅是一个您用来处理http服务器的代码未进行正确的路由,它应该仅处理一次url,现在,它只是对通过服务器的每个请求(甚至对于,jsreport.render),这在浏览器中是不好的,因为正如我已经解释过的,您的浏览器对单个页面加载的请求为3。您在请求处理中使用快捷方式/favicon.ico,这意味着jsreport将在第一个请求到达时尝试初始化自身,因为上述问题(在您的http服务器中未进行正确的路由)导致jsreport尝试在首次页面加载时初始化3次,这将导致未捕获的异常,该异常将退出您的进程且没有错误消息(将来我们将进行一些更新以更好地处理此异常)。最后,这里有一些代码可以完善您的hello world测试用例(有些代码可以过滤不必要的请求,例如/robots.txt,jsreport.render,但是在生产代码中,您应该在http服务器中实现适当的路由器逻辑。不想自己编写代码,只需使用express之类的东西)var http = require('http');var jsreport = require('jsreport');http.createServer(function(req, res) { if (req.url !== '/') { return console.log('ignoring request:', req.url); } console.log('request:', req.url); jsreport .render('<h1>Hello world</h1>') .then(function(out) { out.stream.pipe(res); }) .catch(function(e) { res.end(e.message); });}).listen(1337, '127.0.0.1');关于node.js - jsreport Hello World ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48840565/ 10-16 20:13