thombuchi / ghost-google-cloud-storage Goto Github PK
View Code? Open in Web Editor NEWA simple plugin to add Google Cloud Storage support for Ghost Blog
License: MIT License
A simple plugin to add Google Cloud Storage support for Ghost Blog
License: MIT License
When I try to upload an image in a post in development mode, I receive this error in console and my page keep stuck in uploading message:
ERROR [2017-11-21 18:04:31] "POST /ghost/api/v0.1/uploads/" 500 645ms
NAME: InternalServerError
MESSAGE: Cannot read property 'maxAge' of undefined
level:normal
InternalServerError: Cannot read property 'maxAge' of undefined
at new GhostError (/home/ubuntu/workspace/ghost-alest/ghost/core/server/errors.js:9:26)
at prepareError (/home/ubuntu/workspace/ghost-alest/ghost/core/server/middleware/error-handler.js:40:19)
at Layer.handle_error (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/express/lib/router/layer.js:71:5)
at trim_prefix (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/express/lib/router/index.js:315:13)
at /home/ubuntu/workspace/ghost-alest/ghost/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/express/lib/router/index.js:335:12)
at next (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/express/lib/router/index.js:275:10)
at Layer.handle_error (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/express/lib/router/layer.js:67:12)
at trim_prefix (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/express/lib/router/index.js:315:13)
at /home/ubuntu/workspace/ghost-alest/ghost/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/express/lib/router/index.js:335:12)
at next (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/express/lib/router/index.js:275:10)
at /home/ubuntu/workspace/ghost-alest/ghost/node_modules/express/lib/router/index.js:635:15
at next (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/express/lib/router/index.js:260:14)
at next (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/express/lib/router/route.js:127:14)
at onAPIError (/home/ubuntu/workspace/ghost-alest/ghost/core/server/api/index.js:286:13)
at tryCatcher (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/bluebird/js/release/promise.js:689:18)
at Async._drainQueue (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/bluebird/js/release/async.js:133:16)
TypeError: Cannot read property 'maxAge' of undefined
at /home/ubuntu/workspace/ghost-alest/ghost/node_modules/ghost-google-cloud-storage/index.js:41:62
at tryCatcher (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/bluebird/js/release/promise.js:693:18)
at Async._drainQueue (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/bluebird/js/release/async.js:133:16)
at Async._drainQueues (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/bluebird/js/release/async.js:143:10)
at Immediate.Async.drainQueues (/home/ubuntu/workspace/ghost-alest/ghost/node_modules/bluebird/js/release/async.js:17:14)
at runCallback (timers.js:672:20)
at tryOnImmediate (timers.js:645:5)
at processImmediate [as _immediateCallback] (timers.js:617:5)
It happens with or without ageMax
param in config file. My workaround was force ageMax value in node_modules/ghost-google-cloud-storage/index.js:41:62
I am trying to use this with Ghost 1.x on Google App Engine, but for some reason, when I launch the app with the added storage tag, the entire app crashes. Not really sure why.
Hi
Please could you confirm if there is development to support ghost v2.0.
Thank you
I added this module, added the config, and for some reason it seems files are not going to google storage, and no errors are outputted. Any ideas?
Ghost Version : 3.32.1
Expected Image URL
/{bucketname}/2020/09/Screen-Shot-2020-09-10-at-5.31.48-PM.png
Actual Generated URL
/{bucketname}/2020/092020/09/Screen-Shot-2020-09-10-at-5.31.48-PM.png
getUniqueFileName
returns a path with date in it. The second append is not required.
I've fixed this one. I'll be creating a new pull request for the fix.
Received an error after adding this package on ghost 0.11.3...
Unhandled rejection Error
at Error.IncorrectUsage (/app/node_modules/ghost/core/server/errors/incorrect-usage.js:3:18)
at Object.getStorage (/app/node_modules/ghost/core/server/storage/index.js:36:19)
at setupMiddleware (/app/node_modules/ghost/core/server/middleware/index.js:126:44)
at /app/node_modules/ghost/core/server/index.js:188:9
which was masking...
Unhandled rejection Error: Cannot find module '../../core/server/errors'
at Function.Module._resolveFilename (module.js:336:15)
at Function.Module._load (module.js:278:25)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (/app/node_modules/ghost-google-cloud-storage/index.js:8:19)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (/app/content/storage/gcloud/index.js:2:18)
errors = require('../../core/server/errors'),
utils = require('../../core/server/utils'),
baseStore = require('../../core/server/storage/base'),
after I changed these lines to:
errors = require('../ghost/core/server/errors'),
utils = require('../ghost/core/server/utils'),
baseStore = require('../ghost/core/server/storage/base'),
everything started working fine... I have my installation installed as part of a manifest for "ghost-on-heroku" which is probably why the dynamic pathing fails...
When the ghost google cloud storage module is enabled and you upload an image it fails to return a valid url the url that is displayed looks like
https://example.com/2018/02undefined
Storage module config
"storage": {
"active": "gcloud",
"gcloud": {
"projectId": "my-project-id",
"key": "./location/to/key.json",
"bucket": "example.com",
"assetDomain": "example.com",
"insecure": false,
"maxAge": "2678400"
}
},
If you have any pointers as to where to start looking or if you need additional details please let me know.
Hey!
We released Ghost 0.10.0.
It contains breaking changes for the storage adapter, see https://github.com/TryGhost/Ghost/wiki/Using-a-custom-storage-module.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.