我正在尝试使用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 jsreport@1.10.0 in development mode using configuration file: jsreport.config.json
2018-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 jsreport@1.10.0 in development mode using configuration file: jsreport.config.json
2018-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 SERVICE
5488/tcp closed unknown
我错过了什么?
我在Ubuntu 16.04上使用node.js v8.1.2。
答案 0 :(得分:0)
您的代码无效,原因如下:
http://localhost:1337/
打开浏览器时,您的浏览器实际上会发出3个不同的请求(1&gt; http://localhost:1337/
,2&gt; http://localhost:1337/favicon.ico
,3&gt; {{1 }),而不仅仅是一个http://localhost:1337/robots.txt
(甚至是jsreport.render
,/favicon.ico
),这在浏览器中也很糟糕,因为正如我已经解释过的那样,你的浏览器就像单个页面加载请求一样。/robots.txt
,这意味着当您的第一个请求到达时,jsreport将尝试初始化自己,因为上面解释了问题(没有在您的http中进行正确的路由服务器)这导致jsreport尝试在您的第一个页面加载时初始化3次,这导致一个未捕获的异常退出您的进程而没有错误消息(我们将更新一些内容以便将来更好地处理此异常)。最后,这里有一些代码可以完成你的hello world测试用例(有些代码可以过滤不需要的请求,比如jsreport.render
,/robots.txt
,但是在生产代码中,你应该在你的代码中实现一个合适的路由器逻辑http服务器。如果您不想自己编码,只需使用类似express)
/favicon.ico