Probably related to: https://github.com/TryGhost/Ghost/pull/10415
After a fresh installation of Ghost 2.12.0 via CLI and setting publication cover image the request for the image (on blog's home page) returns 500 with:
<h1 class="error-code">500</h1>
<p class="error-description">Sharp wasn't installed</p>
Sharp has not been installed (ls -la node_modules/ | grep sharp returns nothing) but according to the https://github.com/TryGhost/Ghost-CLI/issues/844#issuecomment-429620397
Without sharp installed Ghost falls back gracefully to its old behaviour of not optimising images. That's it. Ghost will still function in every other way.
I also tried with setting:
"imageOptimization": {
"resize": false
}
in config.production.json but the problem still occurs.
I guess this could be an issue with https://github.com/TryGhost/Ghost/blob/0f32209e65089576b7e3b6cffab76bc4c613a530/core/server/web/shared/middlewares/image/handle-image-sizes.js#L68
cause in my case (according to the logfile) I'm getting MODULE_NOT_FOUND error.
App 170 output: ERROR [2019-01-26 21:59:00] "GET /content/images/size/w2000/2019/01/cover.min-1.png" 500 6ms
App 170 output:
App 170 output: NAME: InternalServerError
App 170 output: CODE: MODULE_NOT_FOUND
App 170 output: MESSAGE: Sharp wasn't installed
App 170 output:
App 170 output: level:critical
App 170 output:
App 170 output: empty
App 170 output: empty
App 170 output: ERROR DETAILS:
App 170 output: empty
App 170 output:
App 170 output: InternalServerError: Sharp wasn't installed
App 170 output: at new InternalServerError (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/node_modules/ghost-ignition/lib/errors/index.js:71:23)
App 170 output: at Object.err [as resizeImage] (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/core/server/lib/image/manipulator.js:49:31)
App 170 output: at storageInstance.exists.then.then.then (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/core/server/web/shared/middlewares/image/handle-image-sizes.js:78:42)
App 170 output: at tryCatcher (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/node_modules/bluebird/js/release/util.js:16:23)
App 170 output: at Promise._settlePromiseFromHandler (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/node_modules/bluebird/js/release/promise.js:512:31)
App 170 output: at Promise._settlePromise (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/node_modules/bluebird/js/release/promise.js:569:18)
App 170 output: at Promise._settlePromise0 (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/node_modules/bluebird/js/release/promise.js:614:10)
App 170 output: at Promise._settlePromises (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/node_modules/bluebird/js/release/promise.js:694:18)
App 170 output: at _drainQueueStep (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/node_modules/bluebird/js/release/async.js:138:12)
App 170 output: at _drainQueue (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/node_modules/bluebird/js/release/async.js:131:9)
App 170 output: at Async._drainQueues (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/node_modules/bluebird/js/release/async.js:147:5)
App 170 output: at Immediate.Async.drainQueues (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/node_modules/bluebird/js/release/async.js:17:14)
App 170 output: at runCallback (timers.js:672:20)
App 170 output: at tryOnImmediate (timers.js:645:5)
App 170 output: at processImmediate [as _immediateCallback] (timers.js:617:5)
App 170 output:
App 170 output: Error: Cannot find module 'sharp'
App 170 output: at Function.Module._resolveFilename (module.js:476:15)
App 170 output: at Function.Module._load (module.js:424:25)
App 170 output: at Module.require (module.js:504:17)
App 170 output: at Module.require (/usr/local/lib/ruby/gems/2.4/gems/passenger-5.3.4/src/helper-scripts/node-loader.js:80:25)
App 170 output: at require (internal/module.js:20:19)
App 170 output: at Object.err [as resizeImage] (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/core/server/lib/image/manipulator.js:47:9)
App 170 output: at storageInstance.exists.then.then.then (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/core/server/web/shared/middlewares/image/handle-image-sizes.js:78:42)
App 170 output: at tryCatcher (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/node_modules/bluebird/js/release/util.js:16:23)
App 170 output: at Promise._settlePromiseFromHandler (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/node_modules/bluebird/js/release/promise.js:512:31)
App 170 output: at Promise._settlePromise (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/node_modules/bluebird/js/release/promise.js:569:18)
App 170 output: at Promise._settlePromise0 (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/node_modules/bluebird/js/release/promise.js:614:10)
App 170 output: at Promise._settlePromises (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/node_modules/bluebird/js/release/promise.js:694:18)
App 170 output: at _drainQueueStep (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/node_modules/bluebird/js/release/async.js:138:12)
App 170 output: at _drainQueue (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/node_modules/bluebird/js/release/async.js:131:9)
App 170 output: at Async._drainQueues (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/node_modules/bluebird/js/release/async.js:147:5)
App 170 output: at Immediate.Async.drainQueues (/usr/home/blogusr/domains/hidden_blog_url/versions/2.12.0/node_modules/bluebird/js/release/async.js:17:14)
Output from ghost doctor:
Debug Information:
OS: freebsd, v11.2-RELEASE-p2
Node Version: v6.14.4
Ghost-CLI Version: 1.9.9
Environment: production
Command: 'ghost doctor'
I'm getting this error in Ghost 2.13.1 on Ubuntu 16.04. How do I fix it?
Same for me - upgrading Ghost to 2.13.1 didn't solve the issue...
@allouis Looks like this is not fixed. If I remove sharp and upload a publication image, i expect that the original image is serveable, but i receive a sharp error.
Will be released today!
Still experiencing the issue in 2.19.2
Quick fix: set the imageOptimization__resize env variable to false
Source: https://github.com/docker-library/ghost/issues/120#issuecomment-358105096
@kerberjg Do you have a stack trace from when you experienced the issue?
@allouis sure, here:
[2019-04-09 22:59:05] INFO Ghost boot 33.013s
[2019-04-09 23:00:51] ERROR
Sharp wasn't installed
"DTzd_06VoAA5ymY.jpg-large.jpg / image/jpeg"
Error ID:
529a2870-5b1b-11e9-8cc1-09df8cc71a5d
Error Code:
SHARP_INSTALLATION
----------------------------------------
InternalServerError: Sharp wasn't installed
at new InternalServerError (/var/lib/ghost/versions/2.19.3/node_modules/ghost-ignition/lib/errors/index.js:77:23)
at Object.args [as process] (/var/lib/ghost/versions/2.19.3/core/server/lib/image/manipulator.js:49:31)
at normalize (/var/lib/ghost/versions/2.19.3/core/server/web/shared/middlewares/image/normalize.js:25:23)
at Layer.handle [as handle_request] (/var/lib/ghost/versions/2.19.3/node_modules/express/lib/router/layer.js:95:5)
at next (/var/lib/ghost/versions/2.19.3/node_modules/express/lib/router/route.js:137:13)
at uploadValidation (/var/lib/ghost/versions/2.19.3/core/server/web/shared/middlewares/validation/upload.js:34:9)
at Layer.handle [as handle_request] (/var/lib/ghost/versions/2.19.3/node_modules/express/lib/router/layer.js:95:5)
at next (/var/lib/ghost/versions/2.19.3/node_modules/express/lib/router/route.js:137:13)
at singleUpload (/var/lib/ghost/versions/2.19.3/core/server/web/shared/middlewares/upload.js:39:9)
at Immediate._onImmediate (/var/lib/ghost/versions/2.19.3/node_modules/multer/lib/make-middleware.js:53:37)
at runCallback (timers.js:706:11)
at tryOnImmediate (timers.js:676:5)
at processImmediate (timers.js:658:5)
Error: Cannot find module 'sharp'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:582:15)
at Function.Module._load (internal/modules/cjs/loader.js:508:25)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
at Object.args [as process] (/var/lib/ghost/versions/2.19.3/core/server/lib/image/manipulator.js:47:9)
at normalize (/var/lib/ghost/versions/2.19.3/core/server/web/shared/middlewares/image/normalize.js:25:23)
at Layer.handle [as handle_request] (/var/lib/ghost/versions/2.19.3/node_modules/express/lib/router/layer.js:95:5)
at next (/var/lib/ghost/versions/2.19.3/node_modules/express/lib/router/route.js:137:13)
at uploadValidation (/var/lib/ghost/versions/2.19.3/core/server/web/shared/middlewares/validation/upload.js:34:9)
at Layer.handle [as handle_request] (/var/lib/ghost/versions/2.19.3/node_modules/express/lib/router/layer.js:95:5)
at next (/var/lib/ghost/versions/2.19.3/node_modules/express/lib/router/route.js:137:13)
at singleUpload (/var/lib/ghost/versions/2.19.3/core/server/web/shared/middlewares/upload.js:39:9)
at Immediate._onImmediate (/var/lib/ghost/versions/2.19.3/node_modules/multer/lib/make-middleware.js:53:37)
at runCallback (timers.js:706:11)
at tryOnImmediate (timers.js:676:5)
at processImmediate (timers.js:658:5)
EDIT: fixed double newlines
Thanks! I'll take a look at this as soon as I can :relaxed:
I've replicated your issue @kerberjg but only just realised it was just an error log, and not an errored request.
Currently this is expected behavior, you should see the response sent successfully with a 201 response.
The output you've pasted is an error log to ensure that anyone that expected stripe to be there will see it in their logs if it's not.
Most helpful comment
Will be released today!