Créer un post avec markdown via l'API renvoie une erreur 500

Bonjour, lorsque j’essaie de créer un message avec une date en markdown, j’obtiens une erreur 500.

Cette erreur se déclenche également lors d’une publication normale via l’interface utilisateur !

Qu’est-ce que je fais de mal ?

``` curl -X POST https://forum.example.com/posts.json -H “Api-Key: ” -H “Api-Username: nobodyfrm” -H “Content-Type: application/json” -d ‘{“topic_id”: 553,“raw”: “CSD Limburg `` 2025-05-10T00:00:00Z”}’`

Logs :

Message (11 copies signalées)

MiniRacer::RuntimeError (TypeError: moment.tz n'est pas une fonction)
lib/pretty_text.rb:238:in `eval'
lib/pretty_text.rb:238:in `block in markdown'
lib/pretty_text.rb:678:in `block in protect'
lib/pretty_text.rb:678:in `synchronize'
lib/pretty_text.rb:678:in `protect'
lib/pretty_text.rb:175:in `markdown'
lib/pretty_text.rb:301:in `cook'
app/models/post_analyzer.rb:30:in `cook'
app/models/post_analyzer.rb:149:in `cooked_stripped'
app/models/post_analyzer.rb:126:in `raw_links'
app/models/post_analyzer.rb:143:in `link_count'
app/models/post.rb:312:in `public_send'
app/models/post.rb:312:in `block (2 levels) in <class:Post>'
lib/validators/post_validator.rb:141:in `max_links_validator'
lib/validators/post_validator.rb:20:in `validate'
lib/post_creator.rb:179:in `valid?'
lib/post_creator.rb:187:in `create'
lib/new_post_manager.rb:321:in `perform_create_post'
lib/new_post_manager.rb:255:in `perform'
app/controllers/posts_controller.rb:218:in `block in create'
lib/distributed_memoizer.rb:16:in `block in memoize'
lib/distributed_mutex.rb:53:in `block in synchronize'
lib/distributed_mutex.rb:49:in `synchronize'
lib/distributed_mutex.rb:49:in `synchronize'
lib/distributed_mutex.rb:34:in `synchronize'
lib/distributed_memoizer.rb:12:in `memoize'
app/controllers/posts_controller.rb:217:in `create'
app/controllers/application_controller.rb:428:in `block in with_resolved_locale'
app/controllers/application_controller.rb:428:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:35:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:415:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:26:in `call'
lib/middleware/default_headers.rb:13:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/processing_request.rb:12:in `call'
lib/middleware/request_t...

Backtrace

lib/pretty_text.rb:238:in `eval'
lib/pretty_text.rb:238:in `block in markdown'
lib/pretty_text.rb:678:in `block in protect'
lib/pretty_text.rb:678:in `synchronize'
lib/pretty_text.rb:678:in `protect'
lib/pretty_text.rb:175:in `markdown'
lib/pretty_text.rb:301:in `cook'
app/models/post_analyzer.rb:30:in `cook'
app/models/post_analyzer.rb:149:in `cooked_stripped'
app/models/post_analyzer.rb:126:in `raw_links'
app/models/post_analyzer.rb:143:in `link_count'
app/models/post.rb:312:in `public_send'
app/models/post.rb:312:in `block (2 levels) in <class:Post>'
lib/validators/post_validator.rb:141:in `max_links_validator'
lib/validators/post_validator.rb:20:in `validate'
lib/post_creator.rb:179:in `valid?'
lib/post_creator.rb:187:in `create'
lib/new_post_manager.rb:321:in `perform_create_post'
lib/new_post_manager.rb:255:in `perform'
app/controllers/posts_controller.rb:218:in `block in create'
lib/distributed_memoizer.rb:16:in `block in memoize'
lib/distributed_mutex.rb:53:in `block in synchronize'
lib/distributed_mutex.rb:49:in `synchronize'
lib/distributed_mutex.rb:49:in `synchronize'
lib/distributed_mutex.rb:34:in `synchronize'
lib/distributed_memoizer.rb:12:in `memoize'
app/controllers/posts_controller.rb:217:in `create'
actionpack (7.2.2.1) lib/action_controller/metal/basic_implicit_render.rb:8:in `send_action'
actionpack (7.2.2.1) lib/abstract_controller/base.rb:226:in `process_action'
actionpack (7.2.2.1) lib/action_controller/metal/rendering.rb:193:in `process_action'
actionpack (7.2.2.1) lib/abstract_controller/callbacks.rb:261:in `block in process_action'
activesupport (7.2.2.1) lib/active_support/callbacks.rb:121:in `block in run_callbacks'
app/controllers/application_controller.rb:428:in `block in with_resolved_locale'
i18n (1.14.7) lib/i18n.rb:353:in `with_locale'
app/controllers/application_controller.rb:428:in `with_resolved_locale'
activesupport (7.2.2.1) lib/active_support/callbacks.rb:130:in `block in run_callbacks'
activesupport (7.2.2.1) lib/active_support/callbacks.rb:141:in `run_callbacks'
actionpack (7.2.2.1) lib/abstract_controller/callbacks.rb:260:in `process_action'
actionpack (7.2.2.1) lib/action_controller/metal/rescue.rb:27:in `process_action'
actionpack (7.2.2.1) lib/action_controller/metal/instrumentation.rb:77:in `block in process_action'
activesupport (7.2.2.1) lib/active_support/notifications.rb:210:in `block in instrument'
activesupport (7.2.2.1) lib/active_support/notifications/instrumenter.rb:58:in `instrument'
activesupport (7.2.2.1) lib/active_support/notifications.rb:210:in `instrument'
actionpack (7.2.2.1) lib/action_controller/metal/instrumentation.rb:76:in `process_action'
actionpack (7.2.2.1) lib/action_controller/metal/params_wrapper.rb:259:in `process_action'
activerecord (7.2.2.1) lib/active_record/railties/controller_runtime.rb:39:in `process_action'
actionpack (7.2.2.1) lib/abstract_controller/base.rb:163:in `process'
actionview (7.2.2.1) lib/action_view/rendering.rb:40:in `process'
rack-mini-profiler (4.0.0) lib/mini_profiler/profiling_methods.rb:90:in `block in profile_method'
actionpack (7.2.2.1) lib/action_controller/metal.rb:252:in `dispatch'
actionpack (7.2.2.1) lib/action_controller/metal.rb:335:in `dispatch'
actionpack (7.2.2.1) lib/action_dispatch/routing/route_set.rb:67:in `dispatch'
actionpack (7.2.2.1) lib/action_dispatch/routing/route_set.rb:50:in `serve'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:53:in `block in serve'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:133:in `block in find_routes'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:126:in `each'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:126:in `find_routes'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:34:in `serve'
actionpack (7.2.2.1) lib/action_dispatch/routing/route_set.rb:896:in `call'
lib/middleware/omniauth_bypass_middleware.rb:35:in `call'
rack (2.2.17) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.17) lib/rack/conditional_get.rb:40:in `call'
rack (2.2.17) lib/rack/head.rb:12:in `call'
actionpack (7.2.2.1) lib/action_dispatch/http/permissions_policy.rb:38:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:415:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:26:in `call'
rack (2.2.17) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.17) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/cookies.rb:704:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/callbacks.rb:31:in `block in call'
activesupport (7.2.2.1) lib/active_support/callbacks.rb:101:in `run_callbacks'
actionpack (7.2.2.1) lib/action_dispatch/middleware/callbacks.rb:30:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:31:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/show_exceptions.rb:32:in `call'
logster (2.20.1) lib/logster/middleware/reporter.rb:40:in `call'
lib/middleware/default_headers.rb:13:in `call'
railties (7.2.2.1) lib/rails/rack/logger.rb:41:in `call_app'
railties (7.2.2.1) lib/rails/rack/logger.rb:29:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/request_id.rb:33:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
rack (2.2.17) lib/rack/method_override.rb:24:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/executor.rb:16:in `call'
rack (2.2.17) lib/rack/sendfile.rb:110:in `call'
plugins/discourse-prometheus/lib/middleware/metrics.rb:14:in `call'
rack-mini-profiler (4.0.0) lib/mini_profiler.rb:191:in `call'
lib/middleware/processing_request.rb:12:in `call'
message_bus (4.4.1) lib/message_bus/rack/middleware.rb:60:in `call'
lib/middleware/request_tracker.rb:385:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/remote_ip.rb:96:in `call'
railties (7.2.2.1) lib/rails/engine.rb:535:in `call'
railties (7.2.2.1) lib/rails/railtie.rb:226:in `public_send'
railties (7.2.2.1) lib/rails/railtie.rb:226:in `method_missing'
rack (2.2.17) lib/rack/urlmap.rb:74:in `block in call'
rack (2.2.17) lib/rack/urlmap.rb:58:in `each'
rack (2.2.17) lib/rack/urlmap.rb:58:in `call'
unicorn (6.1.0) lib/unicorn/http_server.rb:634:in `process_client'
unicorn (6.1.0) lib/unicorn/http_server.rb:739:in `worker_loop'
unicorn (6.1.0) lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn (6.1.0) lib/unicorn/http_server.rb:143:in `start'
unicorn (6.1.0) bin/unicorn:128:in `<top (required)>'
vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `load'
vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `<main>'

Est-ce que cela fonctionne si vous le faites depuis l’UX ? Avez-vous des plugins tiers ?

Non, cela ne fonctionne pas depuis l’interface utilisateur/frontend de l’utilisateur normal.

Plugins :

Nom URL
Custom wizard Bump version · paviliondev/discourse-custom-wizard@6e1efdd · GitHub
Data explorer Build(deps-dev): Bump rack from 3.1.12 to 3.1.16 (#378) · discourse/discourse-data-explorer@d60c7ac · GitHub
Discourse-Kalender FIX: Destroy calendar popover on navigation (#761) · discourse/discourse-calendar@a034764 · GitHub
Docs Build(deps-dev): Bump rack from 3.1.12 to 3.1.16 (#211) · discourse/discourse-docs@17909a9 · GitHub
Footnote DEV: Add various APIs and outlets to the themes config area (#33385) · discourse/discourse@0ccf792 · GitHub
Journal Merge pull request #8 from fokx/main · paviliondev/discourse-journal@ecbd0ff · GitHub
Locations Merge pull request #127 from davidtaylorhq/raw-handlebars · merefield/discourse-locations@06048dc · GitHub
Prometheus bump rack from 3.1.15 to 3.1.16 (#150) · discourse/discourse-prometheus@a1e0ba6 · GitHub
Signatures Bump rack from 3.1.12 to 3.1.16 (#90) · discourse/discourse-signatures@c0d69bd · GitHub
Discourse Spoiler-Alarm DEV: Add various APIs and outlets to the themes config area (#33385) · discourse/discourse@0ccf792 · GitHub
Discourse – Folgen Bump rack from 3.1.12 to 3.1.16 (#153) · discourse/discourse-follow@240f7f9 · GitHub
Discourse – Gamifizierung Bump rack from 3.1.12 to 3.1.16 (#205) · discourse/discourse-gamification@178cb22 · GitHub
Discourse – Gelöst FIX: Check if user has existing solution despite trust_level=any for … · discourse/discourse-solved@0350b46 · GitHub
Discourse – Wer ist online? Bump rack from 3.1.12 to 3.1.16 (#131) · discourse/discourse-whos-online@7618335 · GitHub

Thèmes et Composants

Quelle version de Discourse utilisez-vous ?


Votre publication brute semble étrange ici. Pouvez-vous confirmer que vous avez écrit ceci

curl -X POST `https://forum.example.com/posts.json` \
-H “Api-Key: <myKey>” \
-H “Api-Username: nobodyfrm” \
-H “Content-Type: application/json” \
-d ‘{“topic_id”: 553,“raw”: “CSD Limburg  `` [date=2025-05-10]`”}’

Ou partagez une vidéo/capture d’écran de ce que vous tapez dans le compositeur.

votre curl crée un post mais la date est du texte entre guillemets - pas une date.

J’ai trouvé mon erreur : certains plugins sont maintenant inclus dans le cœur de Discourse, donc les plugins étaient obsolètes.

Après avoir corrigé cela, cela fonctionne comme prévu.

2 « J'aime »

Je ne suis pas sûr que ce soit la solution pour moi car cela m’est arrivé après la mise à jour de Discourse, donc tout plugin principal aurait dû être mis à jour avec Discourse dans mon cas.

Référence à mon post :

Erreur interne du serveur - Insertion date/heure - Support - Discourse Meta

Quelqu’un a fait référence à celui-ci, mais bien que je pense qu’il soit lié, je ne sais pas s’il est identique à 100 %.