Closed NLaszlo closed 2 years ago
Error: Not initialized, you need to call jsreport.init().then before rendering at Reporter.render (D:\snapshot\jsreport\node_modules\jsreport-core\lib\reporter.js:322:13) at Object.render (D:\snapshot\jsreport\node_modules\jsreport-express\lib\routes.js:42:14) at D:\snapshot\jsreport\node_modules\jsreport-templates\lib\templates.js:182:71 at Layer.handle [as handle_request] (D:\snapshot\jsreport\node_modules\express\lib\router\layer.js:95:5) at next (D:\snapshot\jsreport\node_modules\express\lib\router\route.js:137:13) at Route.dispatch (D:\snapshot\jsreport\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request] (D:\snapshot\jsreport\node_modules\express\lib\router\layer.js:95:5) at D:\snapshot\jsreport\node_modules\express\lib\router\index.js:281:22 at param (D:\snapshot\jsreport\node_modules\express\lib\router\index.js:354:14) at param (D:\snapshot\jsreport\node_modules\express\lib\router\index.js:365:14) at Function.process_params (D:\snapshot\jsreport\node_modules\express\lib\router\index.js:410:3) at next (D:\snapshot\jsreport\node_modules\express\lib\router\index.js:275:10) at D:\snapshot\jsreport\node_modules\jsreport-express\lib\routes.js:17:5 at Layer.handle [as handle_request] (D:\snapshot\jsreport\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (D:\snapshot\jsreport\node_modules\express\lib\router\index.js:317:13) at D:\snapshot\jsreport\node_modules\express\lib\router\index.js:284:7 at Function.process_params (D:\snapshot\jsreport\node_modules\express\lib\router\index.js:335:12) at next (D:\snapshot\jsreport\node_modules\express\lib\router\index.js:275:10) at D:\snapshot\jsreport\node_modules\jsreport-express\lib\reporter.express.js:188:5 at Layer.handle [as handle_request] (D:\snapshot\jsreport\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (D:\snapshot\jsreport\node_modules\express\lib\router\index.js:317:13) at D:\snapshot\jsreport\node_modules\express\lib\router\index.js:284:7 at Function.process_params (D:\snapshot\jsreport\node_modules\express\lib\router\index.js:335:12) at next (D:\snapshot\jsreport\node_modules\express\lib\router\index.js:275:10) at cors (D:\snapshot\jsreport\node_modules\cors\lib\index.js:188:7) at D:\snapshot\jsreport\node_modules\cors\lib\index.js:224:17 at originCallback (D:\snapshot\jsreport\node_modules\cors\lib\index.js:214:15) at D:\snapshot\jsreport\node_modules\cors\lib\index.js:219:13 at optionsCallback (D:\snapshot\jsreport\node_modules\cors\lib\index.js:199:9) at corsMiddleware (D:\snapshot\jsreport\node_modules\cors\lib\index.js:204:7) at Layer.handle [as handle_request] (D:\snapshot\jsreport\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (D:\snapshot\jsreport\node_modules\express\lib\router\index.js:317:13) at D:\snapshot\jsreport\node_modules\express\lib\router\index.js:284:7 at Function.process_params (D:\snapshot\jsreport\node_modules\express\lib\router\index.js:335:12)
Could you check you use the latest version of jsreport.Binary and jsreport.Local?
I'm not able to replicate this problem, although using KeepAlive(false)
configuration may help you.
var rs = new LocalReporting()
.UseBinary(JsReportBinary.GetBinary())
.Configure(cfg =>cfg.AllowLocalFilesAccess().BaseUrlAsWorkingDirectory())
.AsUtility()
.KeepAlive(false)
.Create();
We are running JSReport inside our application as web server (initialized at app start). The issue arises when we set the number of worker processes greater than 1, because the way IIS handles them is the following: when spawning a new worker thread it calls app startup which creates a new instance of JSReport web server. If we try to access IP:JSReportPort/tempateID it gives an EPIPE: broken pipe error. Could you explain please in a couple of words how the AsUtility().KeepAlive(bool) feature works?
Also if we try to access the studio it is stuck on loading screen and in the developer console Failed to load resource: the server responded with a status of 500 (Internal Server Error) message is displayed multiple times.
I have a lot of API calls using axios in a single template script. If I comment out most of them leaving just a few it works. It also starts working after a few page refreshes but at first try it displays the error.
We are running JSReport inside our application as web server (initialized at app start), The issue arises when we set the number of worker processes greater than 1
Yes, this is problematic with starting as a web server. This means there are two processes that start jsreport on the same port and one probably fails.
Using the AsUtility()
would cause jsreport to start separately on the background and there should be mutex handling there is just one instance running.
If it's an option for you, I would consider running jsreport as a completely standalone service and communicate with it from your APP using jsreport.Client
.
Thank you for the quick reply, we will have a look at it.
I've released jsreport.Binary 3.8.0 as well as the other .net sdk nugets. Please try it out and reopen the issue if you have further issues.
I'm getting this error message when I try to run my template from studio:
Error: Not initialized, you need to call jsreport.init().then before rendering at Reporter.render (D:\snapshot\jsreport\node_modules\jsreport-core\lib\reporter.js:322:13) at Object.render (D:\snapshot\jsreport\node_modules\jsreport-express\lib\routes.js:42:14) at D:\snapshot\jsreport\node_modules\jsreport-express\lib\routes.js:75:22 at Layer.handle [as handle_request] (D:\snapshot\jsreport\node_modules\express\lib\router\layer.js:95:5) at next (D:\snapshot\jsreport\node_modules\express\lib\router\route.js:137:13) at Route.dispatch (D:\snapshot\jsreport\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request]
If I set IIS Maximum Worker Processes to 1 it works but otherwise it fails.