Error in rendering reports
-
hi @balajisr, just to add more comments about your problems and why you get such weird errors... i think you have the typical npm permissions problem, according to your logs you have this permission error original
{ Error: EACCES: permission denied, mkdir '/home/jsreportapp/node_modules/puppeteer/.local-chromium'
and now you are not able to foundjsreport
command after installing it withnpm i -g jsreport-cli
, this usually means that npm is in dirty state in which it requires that every run of npm should be usingsudo
.the solution for this is to follow npm recommendations described here to fix the permissions problems, i usually install node with nvm and never have to worry about this, you can try uninstall node/npm and install it with
nvm
or follow this guide about changing default npm global installation directory.after fixing npm permissions, i will say that you should try to uninstall the cli
npm uninstall -g jsreport-cli
and then reinstall it againnpm install -g jsreport-cli
and follow thejsreport init > jsreport configure > jsreport start
steps in new fresh directory, if your npm permissions are solved you should not see any permissions error while installingunfortunately we can't control how the user installs node and npm, so there are situations like your case where you get such weird errors when installing jsreport.
-
Thanks for all the help.
We uninstalled node.js and reinstalled using nvm. After this JSReport is showing these errors...
Error: Failed to launch chrome!
[0801/002944.284507:ERROR:zygote_host_impl_linux.cc(89)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.TROUBLESHOOTING: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md
at onClose (/home/jsreportapp/node_modules/puppeteer/lib/Launcher.js:285:14) at Interface.helper.addEventListener (/home/jsreportapp/node_modules/puppeteer/lib/Launcher.js:274:50) at emitNone (events.js:111:20) at Interface.emit (events.js:208:7) at Interface.close (readline.js:368:8) at Socket.onend (readline.js:147:10) at emitNone (events.js:111:20) at Socket.emit (events.js:208:7) at endReadableNT (_stream_readable.js:1064:12) at _combinedTickCallback (internal/process/next_tick.js:138:11) at process._tickCallback (internal/process/next_tick.js:180:9)
-
hmm ok, this error is throw when trying to render a report, right? it says that it is still trying to launch chrome as root but let's try the easy solution that is to pass the "--no-sandbox" flag, in your
jsreport.config.json
file add this:(note: i'm showing just the relevant part of the config, you just need to ensure to add these new properties there, the rest of the properties that you already have should stay there)
{ "extensions": { "chrome-pdf": { "launchOptions": { "args": ["--no-sandbox"] } } } }
after that, try to start jsreport and run a report again
-
ok finally, jsreport is working...
but when I try generating report in application, it is showing the following error...
Filter Params {"id":"UPLOADED-24072018117239"}
{ Error: Recipe 'phantom-pdf' not found. If this is a custom recipe make sure it's properly installed from npm.
at /vaap/vaap/code/vaapdev/node/businessapp/node_modules/jsreport-client/lib/client.js:64:23
at ConcatStream.<anonymous> (/vaap/vaap/code/vaapdev/node/businessapp/node_modules/jsreport-client/node_modules/concat-stream/index.js:36:43)
at emitNone (events.js:111:20)
at ConcatStream.emit (events.js:208:7)
at finishMaybe (/vaap/vaap/code/vaapdev/node/businessapp/node_modules/jsreport-client/node_modules/readable-stream/lib/_stream_writable.js:475:14)
at endWritable (/vaap/vaap/code/vaapdev/node/businessapp/node_modules/jsreport-client/node_modules/readable-stream/lib/_stream_writable.js:485:3)
at ConcatStream.Writable.end (/vaap/vaap/code/vaapdev/node/businessapp/node_modules/jsreport-client/node_modules/readable-stream/lib/_stream_writable.js:455:41)
at IncomingMessage.onend (_stream_readable.js:595:10)
at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:111:20)
remoteStack: 'Error: Recipe 'phantom-pdf' not found. If this is a custom recipe make sure it's properly installed from npm.\n at module.exports (/home/jsreportapp/node_modules/jsreport-core/lib/util/createError.js:9:13)\n at Reporter.createError (/home/jsreportapp/node_modules/jsreport-core/lib/reporter.js:258:12)\n at invokeRender (/home/jsreportapp/node_modules/jsreport-core/lib/render/render.js:88:20)\n at <anonymous>' }
-
in jsreport v2, phantom-pdf is not available by default, you can read some notes about the changes in jsreport v2 here.
you can still use use
phantom-pdf
in v2 but you need to install it in your project, usenpm install jsreport-phantom-pdf --save
(latest version of jsreport-phantom-pdf is 2.1.3).note: jsreport v2 has other changes so be sure to read and update carefully your templates if you are trying to use some templates that were working in v1.
-
Hi, we ran npm install jsreport-phantom-pdf --save in server. Phantom PDF is present in the node_modules directory.
Still, we are getting the same error while generating the report
'Error: Recipe 'phantom-pdf' not found. If this is a custom recipe make sure it's properly installed from npm.'
Please advice...
-
Have you restarted jsreport after installing phantom recipe? Please share the output logs.
-
Hi,
Yes, we restarted pm2 after installing jsreport-phantom-pdf.
This is the error we got while generating the PDF.
{ Error: Recipe 'phantom-pdf' not found. If this is a custom recipe make sure it's properly installed from npm.
at /vaap/vaap/code/vaapdev/node/businessapp/node_modules/jsreport-client/lib/client.js:64:23
at ConcatStream.<anonymous> (/vaap/vaap/code/vaapdev/node/businessapp/node_modules/jsreport-client/node_modules/concat-stream/index.js:36:43)
at emitNone (events.js:111:20)
at ConcatStream.emit (events.js:208:7)
at finishMaybe (/vaap/vaap/code/vaapdev/node/businessapp/node_modules/jsreport-client/node_modules/readable-stream/lib/_stream_writable.js:475:14)
at endWritable (/vaap/vaap/code/vaapdev/node/businessapp/node_modules/jsreport-client/node_modules/readable-stream/lib/_stream_writable.js:485:3)
at ConcatStream.Writable.end (/vaap/vaap/code/vaapdev/node/businessapp/node_modules/jsreport-client/node_modules/readable-stream/lib/_stream_writable.js:455:41)
at IncomingMessage.onend (_stream_readable.js:595:10)
at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:111:20)
at IncomingMessage.emit (events.js:208:7)
at endReadableNT (_stream_readable.js:1064:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickDomainCallback (internal/process/next_tick.js:218:9)
remoteStack: 'Error: Recipe 'phantom-pdf' not found. If this is a custom recipe make sure it's properly installed from npm.\n at module.exports (/home/jsreportapp/node_modules/jsreport-core/lib/util/createError.js:9:13)\n at Reporter.createError (/home/jsreportapp/node_modules/jsreport-core/lib/reporter.js:258:12)\n at invokeRender (/home/jsreportapp/node_modules/jsreport-core/lib/render/render.js:88:20)\n at <anonymous>' }Thank you for your support.
-
just to be sure can you show the package.json of the project? also the output of the
npm ls --depth=0
command
-
Hi,
package.json content :
{
"name": "businessapp",
"description": "business application",
"main": "./app",
"version": "0.1.0",
"scripts": {
"start": "node ./app",
"test": "vows --spec --isolate",
"predeploy": "echo This will be run before deploying the app",
"postdeploy": "echo This will be run after deploying the app"
},
"dependencies": {
"async": "",
"bcrypt-nodejs": "",
"bunyan": "^1.2.3",
"config": "",
"connect": "",
"cron": "",
"excel": "",
"express-fileupload": "^0.4.0",
"files-and-folders": "",
"formidable": "",
"hashmap": "",
"hogan.js": "",
"java": "",
"jsesc": "",
"jsreport": "^1.10.0",
"jsreport-browser-client-dist": "^1.0.4",
"jsreport-client": "^0.4.1",
"jsreport-jsrender": "^1.0.2",
"jsreport-phantom-pdf": "^1.4.6",
"mandrill-api": "",
"mime": "^1.3.6",
"minio": "",
"moment": "",
"mongodb": "",
"node-cache": "",
"node-dir": "",
"node-jasper": "",
"node-uuid": "",
"nodemailer": "",
"nodemailer-ses-transport": "",
"numeral": "",
"object-assign": "",
"path": "^0.12.7",
"pdf-merge": "",
"phantom-pdf": "^0.4.1",
"q": "",
"rekuire": "",
"request": "",
"restify": "2.7.0",
"serve-static": "",
"stripe": "",
"time": "",
"underscore": "1.6.0",
"vaap-common-service": "file:../node_packages/vaap-common-service",
"vaap-mongodb": "file:../node_packages/vaap-mongodb",
"vaap-tokenutil": "file:../node_packages/vaap-tokenutil",
"vaap-util": "file:../node_packages/vaap-util",
"vaap-ws": "file:../node_packages/vaap-ws",
"validator": ""
},
"analyze": false,
"devDependencies": {
"vows": "0.7.0"
},
"license": "Commercial",
"engines": {
"node": ">=0.10.26"
}
}npm ls --depth=0 command output:
+-- async@2.6.1
+-- bcrypt-nodejs@0.0.3
+-- bunyan@1.8.12
+-- config@2.0.1
+-- connect@3.6.6
+-- cron@1.3.0
+-- excel@1.0.0
+-- express-fileupload@0.4.0
+-- files-and-folders@0.0.14
+-- formidable@1.2.1
+-- hashmap@2.3.0
+-- hogan.js@3.0.2
+-- java@0.10.0
+-- jsesc@2.5.1
+-- jsreport@1.10.0
+-- jsreport-browser-client-dist@1.1.0
+-- jsreport-client@0.4.1
+-- jsreport-jsrender@1.0.2
+-- jsreport-phantom-pdf@1.4.6
+-- mandrill-api@1.0.45
+-- mime@1.6.0
+-- minio@6.0.0
+-- moment@2.22.2
+-- mongodb@3.1.1
+-- node-cache@4.2.0
+-- node-dir@0.1.17
+-- UNMET DEPENDENCY node-jasper@*
+-- node-uuid@1.4.8
+-- nodemailer@4.6.7
+-- nodemailer-ses-transport@1.5.1
+-- numeral@2.0.6
+-- object-assign@4.1.1
+-- path@0.12.7
+-- pdf-merge@1.0.3
+-- phantom-pdf@0.4.1
+-- q@1.5.1
+-- rekuire@0.1.9
+-- request@2.87.0
+-- restify@2.7.0
+-- serve-static@1.13.2
+-- stripe@6.5.0
+-- time@0.12.0
+-- underscore@1.6.0
+-- vaap-common-service@0.1.0 -> /vaap/vaap/code/vaapdev/node/node_packages/vaap-common-service
+-- vaap-mongodb@0.1.0 -> /vaap/vaap/code/vaapdev/node/node_packages/vaap-mongodb
+-- vaap-tokenutil@0.1.0 -> /vaap/vaap/code/vaapdev/node/node_packages/vaap-tokenutil
+-- vaap-util@0.1.0 -> /vaap/vaap/code/vaapdev/node/node_packages/vaap-util
+-- vaap-ws@0.1.0 -> /vaap/vaap/code/vaapdev/node/node_packages/vaap-ws
+-- validator@10.4.0
`-- vows@0.7.0npm ERR! missing: node-jasper@, required by businessapp@0.1.0
npm ERR! peer dep missing: react@^0.14 || ^15, required by react-copy-to-clipboard@4.3.0
npm ERR! missing: mkdirp@0.5.1, required by node-pre-gyp@0.10.0
npm ERR! missing: minimist@0.0.8, required by mkdirp@0.5.1
npm ERR! missing: minimatch@3.0.4, required by ignore-walk@3.0.1
npm ERR! missing: brace-expansion@1.1.11, required by minimatch@3.0.4
npm ERR! missing: balanced-match@1.0.0, required by brace-expansion@1.1.11
npm ERR! missing: concat-map@0.0.1, required by brace-expansion@1.1.11
npm ERR! missing: console-control-strings@1.1.0, required by npmlog@4.1.2
npm ERR! missing: inherits@2.0.3, required by readable-stream@2.3.6
npm ERR! missing: safe-buffer@5.1.1, required by readable-stream@2.3.6
npm ERR! missing: safe-buffer@5.1.1, required by string_decoder@1.1.1
npm ERR! missing: console-control-strings@1.1.0, required by gauge@2.7.4
npm ERR! missing: string-width@1.0.2, required by gauge@2.7.4
npm ERR! missing: strip-ansi@3.0.1, required by gauge@2.7.4
npm ERR! missing: code-point-at@1.1.0, required by string-width@1.0.2
npm ERR! missing: is-fullwidth-code-point@1.0.0, required by string-width@1.0.2
npm ERR! missing: strip-ansi@3.0.1, required by string-width@1.0.2
npm ERR! missing: number-is-nan@1.0.1, required by is-fullwidth-code-point@1.0.0
npm ERR! missing: ansi-regex@2.1.1, required by strip-ansi@3.0.1
npm ERR! missing: string-width@1.0.2, required by wide-align@1.1.2
npm ERR! missing: inherits@2.0.3, required by glob@7.1.2
npm ERR! missing: minimatch@3.0.4, required by glob@7.1.2
npm ERR! missing: once@1.4.0, required by glob@7.1.2
npm ERR! missing: once@1.4.0, required by inflight@1.0.6
npm ERR! missing: wrappy@1.0.2, required by inflight@1.0.6
npm ERR! missing: wrappy@1.0.2, required by once@1.4.0
npm ERR! missing: minipass@2.2.4, required by tar@4.4.1
npm ERR! missing: mkdirp@0.5.1, required by tar@4.4.1
npm ERR! missing: safe-buffer@5.1.1, required by tar@4.4.1
npm ERR! missing: yallist@3.0.2, required by tar@4.4.1
npm ERR! missing: minipass@2.2.4, required by fs-minipass@1.2.5
npm ERR! missing: safe-buffer@5.1.1, required by minipass@2.2.4
npm ERR! missing: yallist@3.0.2, required by minipass@2.2.4
npm ERR! missing: minipass@2.2.4, required by minizlib@1.1.0
npm ERR! extraneous: vows@0.7.0 /vaap/vaap/code/vaapdev/node/businessapp/node_modules/vaap-common-service/node_modules/vows
npm ERR! extraneous: diff@1.0.8 /vaap/vaap/code/vaapdev/node/businessapp/node_modules/vaap-mongodb/node_modules/diff
npm ERR! extraneous: eyes@0.1.8 /vaap/vaap/code/vaapdev/node/businessapp/node_modules/vaap-mongodb/node_modules/eyes
npm ERR! extraneous: vows@0.7.0 /vaap/vaap/code/vaapdev/node/businessapp/node_modules/vaap-mongodb/node_modules/vows
npm ERR! extraneous: vows@0.7.0 /vaap/vaap/code/vaapdev/node/businessapp/node_modules/vaap-mongodb/node_modules/vows
npm ERR! missing: nodemailer@, required by vaap-util@0.1.0
npm ERR! missing: nodemailer-ses-transport@, required by vaap-util@0.1.0
npm ERR! missing: underscore@, required by vaap-util@0.1.0
npm ERR! missing: path@, required by vaap-util@0.1.0
npm ERR! missing: fs@, required by vaap-util@0.1.0
npm ERR! missing: validator@, required by vaap-util@0.1.0
npm ERR! missing: bunyan@, required by vaap-util@0.1.0
npm ERR! missing: node-dir@, required by vaap-util@0.1.0
npm ERR! missing: hogan.js@, required by vaap-util@0.1.0
npm ERR! missing: async@, required by vaap-util@0.1.0
npm ERR! missing: rekuire@, required by vaap-util@0.1.0
npm ERR! missing: config@*, required by vaap-util@0.1.0
npm ERR! extraneous: vows@0.7.0 /vaap/vaap/code/vaapdev/node/businessapp/node_modules/vaap-tokenutil/node_modules/vows
npm ERR! extraneous: diff@1.0.8 /vaap/vaap/code/vaapdev/node/businessapp/node_modules/vaap-util/node_modules/diff
npm ERR! extraneous: eyes@0.1.8 /vaap/vaap/code/vaapdev/node/businessapp/node_modules/vaap-util/node_modules/eyes
npm ERR! missing: inherits@2.0.1, required by util@0.10.3
npm ERR! extraneous: vows@0.7.0 /vaap/vaap/code/vaapdev/node/businessapp/node_modules/vaap-util/node_modules/vows
npm ERR! extraneous: vows@0.7.0 /vaap/vaap/code/vaapdev/node/businessapp/node_modules/vaap-util/node_modules/vows
npm ERR! missing: mkdirp@0.3.0, required by hogan.js@3.0.2Thanks
-
@yamsgam @balajisr i'm a bit confused now, your package.json says that you are using jsreport v1, but all the steps i was mentioning in my previous comments were about jsreport v2, and according to @balajisr comments he was trying jsreport v2 too, but now i see that you have something different, not sure what is happening, could it be that you are not trying it in the right project?
-
Hi,
Thank you for your support and time.
Node modules are not updated to recent version.
So I updated all modules using below commands:
npm outdated
npm install -g npm-check-updates
ncu -u
npm installNow using recent version of modules:
"jsreport": "^2.1.1",
"jsreport-browser-client-dist": "^1.0.4",
"jsreport-client": "^1.0.0",
"jsreport-jsrender": "^2.0.0",
"jsreport-phantom-pdf": "^2.1.3",But still we are getting below error:
{ Error: Recipe 'phantom-pdf' not found. If this is a custom recipe make sure it's properly installed from npm.
at /vaap/vaap/code/vaapdev/node/businessapp/node_modules/jsreport-client/lib/client.js:64:23
at ConcatStream.<anonymous> (/vaap/vaap/code/vaapdev/node/businessapp/node_modules/jsreport-client/node_modules/concat-stream/index.js:36:43)
at emitNone (events.js:111:20)
at ConcatStream.emit (events.js:208:7)
at finishMaybe (/vaap/vaap/code/vaapdev/node/businessapp/node_modules/jsreport-client/node_modules/readable-stream/lib/_stream_writable.js:475:14)
at endWritable (/vaap/vaap/code/vaapdev/node/businessapp/node_modules/jsreport-client/node_modules/readable-stream/lib/_stream_writable.js:485:3)
at ConcatStream.Writable.end (/vaap/vaap/code/vaapdev/node/businessapp/node_modules/jsreport-client/node_modules/readable-stream/lib/_stream_writable.js:455:41)
at IncomingMessage.onend (_stream_readable.js:595:10)
at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:111:20)
at IncomingMessage.emit (events.js:208:7)
at endReadableNT (_stream_readable.js:1064:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickDomainCallback (internal/process/next_tick.js:218:9)
remoteStack: 'Error: Recipe 'phantom-pdf' not found. If this is a custom recipe make sure it's properly installed from npm.\n at module.exports (/home/jsreportapp/node_modules/jsreport-core/lib/util/createError.js:9:13)\n at Reporter.createError (/home/jsreportapp/node_modules/jsreport-core/lib/reporter.js:258:12)\n at invokeRender (/home/jsreportapp/node_modules/jsreport-core/lib/render/render.js:88:20)\n at <anonymous>' }Please advice.
-
are you using two projects? or are you using one project? if you are using one project i guess you are using two processes, one where you start jsreport server and another where you use jsreport-client to communicate with the jsreport server. it looks like you are not restarting the jsreport server after the npm updates. is the jsreport server in your same machine? or is it in another server with different ip? maybe you are not updating the server in which the jsreport server is running, all my comments about the updates should be done for the jsreport server.
i think you are getting confused by the setup done in your side (or at least i'm with all the comments at this point). with the information that i have it is not clear to me how your setup looks like, we don't know the details about how are you starting the server or if you are using two different machines. i would say try to make it work the simplest way (without using pm2) and then after verify that you don't have any errors start to look at making it production ready (with the help of pm2)
-
Hi,
We completely reinstalled node.js and jsreport in our server.
Now we are not getting "Recipe 'phantom-pdf' not found Error".
But we are not able to save templates. On click of save button, getting following error:
Uncaught (in promise) TypeError: Cannot read property 'nameAttribute' of undefined
at t.value (client.js?97f4c887fb1d5546bab6:77)
at t.value (client.js?97f4c887fb1d5546bab6:77)
at u.renderValidatedComponentWithoutOwnerOrContext (client.js?97f4c887fb1d5546bab6:74)
at u.renderValidatedComponent (client.js?97f4c887fb1d5546bab6:74)
at u.updateRenderedComponent (client.js?97f4c887fb1d5546bab6:74)
at u.performComponentUpdate (client.js?97f4c887fb1d5546bab6:74)
at updateComponent (client.js?97f4c887fb1d5546bab6:74)
at u.receiveComponent (client.js?97f4c887fb1d5546bab6:74)
at Object.receiveComponent (client.js?97f4c887fb1d5546bab6:2)
at Object.updateChildren (client.js?97f4c887fb1d5546bab6:74)
at g.reconcilerUpdateChildren (client.js?97f4c887fb1d5546bab6:75)
at g.updateChildren (client.js?97f4c887fb1d5546bab6:75)
at g.updateChildren (client.js?97f4c887fb1d5546bab6:75)
at g._updateDOMChildren (client.js?97f4c887fb1d5546bab6:74)
at g.updateComponent (client.js?97f4c887fb1d5546bab6:74)
at g.receiveComponent (client.js?97f4c887fb1d5546bab6:74)Please advice.
-
Hi,
We are able to eliminate all previous errors. But still report is not generating through our code.
This is the log I got in terminal,
2018-08-06T14:03:47.852Z - info: Starting rendering request 1 (user: vaapadmin)
2018-08-06T14:03:47.857Z - info: Rendering template { name: CM_TaskOrder, recipe: chrome-pdf, engine: handlebars, preview: false }
2018-08-06T14:03:47.859Z - debug: Inline data specified.
2018-08-06T14:03:47.860Z - debug: Resources not defined for this template.
2018-08-06T14:03:47.876Z - debug: Base url not specified, skipping its injection.
2018-08-06T14:03:47.878Z - debug: Rendering engine handlebars
2018-08-06T14:03:48.314Z - debug: Compiled template not found in the cache, compiling
2018-08-06T14:03:48.320Z - debug: Executing recipe chrome-pdf
2018-08-06T14:03:48.641Z - debug: Failed to load resource: net::ERR_FILE_NOT_FOUND
2018-08-06T14:03:48.697Z - debug: Running chrome with params {"printBackground":true,"margin":{}}
2018-08-06T14:03:48.809Z - debug: Skipping storing report.
2018-08-06T14:03:48.819Z - info: Rendering request 1 finished in 967 msIn our code,
var client = require("jsreport-client")(url, username, password);
client.render({ template: { name: reportName, engine: 'handlebars', recipe: 'chrome-pdf' }, data: results.orderValues }, function (err, response) { if (err) { return console.error(err); } else { response.body(function (body) { fs.writeFile(filePath, body, function (err) { if (err) { console.log(err); return callback(err); } else { callback(null, { path: filePath }); } }); }); } });
Kindly advice. Thanks for your time.
-
Hi,
Any suggestion on this. Please advice.
Thank You
-
since your logs say that the report was generated correctly, the only hint that i have is that probably you are using the jsreport-client package in wrong after updating it (but i'm not sure at this point if you update it too or not). so i'm going to paste here my previous comment about that and you should verify that you have correct version of jsreport-client and that you are using it as expected.
previous comment:
what version of jsreport-client are you using? in latest one (jsreport-client 1.0.0) version calling client.render will return a promise (it is not expected a callback anymore), you can find example usage with latest version here.
-
Hi,
PDF is generating. Thank you for your support.