9
votes

Des erreurs de compilation de clojure déroutante - Rapports de mauvaise ligne?

Je reçois des erreurs compatibles lors de l'exécution Lein Run Code> sur mon Noir Projet. Cela fonctionnait, puis soudain, cela a cessé de fonctionner. Ma suspicion était que l'erreur est liée à essayer d'inclure [org.pegdown / piquetdown "1.1.0"] code> dans mon vecteur de dépendances dans le fichier de projet, mais je ne sais pas avec certitude. J'ai supprimé cette ligne, couru Lein propre; Lein Deps code> puis essayé Lein exécuter code> à nouveau, mais l'erreur persiste.

ci-dessous sont deux erreurs distinctes que je reçois. Je ne sais pas ce qui déclenche une erreur. Tous mes fichiers (dans l'espace de noms "Benekastah") signalent une erreur à la ligne 1, qui est typiquement un appel normal NS code>. P>

La deuxième erreur semble indiquer que le problème est Dans Post_Modify.clj, mais cela travaillait avant et je ne l'ai pas changé. P>

J'ai essayé la solution trouvée ici et il n'a pas semblé fonctionner. p>

Tout aperçu de ces erreurs déroutantes? p>

Erreur 1: P>

(ns benekastah.views.blog.post-modify
  (:require [noir.response :as resp]
            [somnium.congomongo :as congo]
            [clj-time.core :as time]
            [clj-time.format :as time-format]
            [clj-time.coerce :as time-coerce]
            [clojure.string :as cl-string]
            [benekastah.lib.string :as b-string])
  (:use noir.core
        benekastah.models.db))

(defn- save-post
  [post]
  (try (save! :post post)
       (resp/redirect "/")
    (catch Exception e
      {:status 500
       :body (str "Could not save post: " e)})))

(defpage [:post "/post"] [& param-lists]
         (let [params (populate-defaults 
                        :post 
                        (apply hash-map (apply concat param-lists)))
               {date :date, title :title } params
               slug (str 
                      (time-format/unparse 
                        (time-format/formatters :date)
                        (time-coerce/from-date date)) 
                      "_"
                      (cl-string/replace (cl-string/trim title)
                                         #"[^\w\-]"
                                         "_"))
               p (merge params {:slug slug})]
           (save-post p)))

(defpage [:put "/post"] {:keys [id]}
         (let [post (congo/fetch-by-id id)]
           (save-post post)))

(defpage [:delete "/post"] {:keys [id]}
         (let [post (congo/fetch-by-id id)]
           (congo/destroy! :post post)))


4 commentaires

Pas une réponse à votre question, mais ces sortes de problèmes sont généralement évitées si l'on tire parti de la repeale à construire progressivement leur application, plutôt que d'écrire un tas de code puis de voir si tout fonctionne.


D'accord. J'ai tendance à développer de cette façon, ce qui me rend encore plus confus. L'étape après laquelle la défaillance a été renversée, mais le problème persiste. J'essaie de retracer mes pas, mais sans succès. Existe-t-il une classe d'erreurs particulière qui peut être liée?


Au bas des deux traces de pile est une nullpoinpointException lorsque vous essayez de renvoyer quelque chose lors de la charge de Benekastah.css.Base. Pourrait vouloir regarder là-bas. En outre, 1.3.0 a plus de traces de pile.


J'ai la même erreur sur un programme qui fonctionne bien dans la replaction via Slime. Quand j'ai fini de travailler et je suis allé monter avec "Lein Uberjar", j'ai eu les erreurs ci-dessus. "Lein gui" échoue également de la même manière. J'ai essayé "Lein Clean", supprimer ~ / .lein, même la mise à niveau vers Lein2-Aperçu, en aucun effet. L'application fonctionne toujours bien de la RÉPEC, elle refuse simplement d'exécuter une autre manière.


3 Réponses :


1
votes

Voici comment j'ai "réparé" mon problème: En réponse au commentaire de @ Alex suggérant que je regarde Benkastah.css.base, j'ai commenté la majeure partie de ce fichier et redémarré le serveur. À ce stade, le message d'erreur indiquait à Benekastah.css.blog, où j'ai de nouveau commenté la majeure partie du fichier. Ensuite, le message d'erreur signalé àenkastah.css.theme (le dernier fichier dans le groupe Benekastah.css. * Groupe), à ​​quel point j'ai pris les mêmes étapes que les deux autres fichiers. Ensuite, le serveur a fonctionné. Ainsi, les mots débordés, je n'ai pas décompressé le code dans chaque fichier et tout semble aller bien à nouveau. J'ai aussi pu ajouter la dépendance à la piégée. Bizarre.

Si quelqu'un a un aperçu de la manière dont Crojure, Leiningen ou Java travaille, cela entraînerait un sens, je serais intéressé de l'entendre.

Pour l'enregistrement, j'utilise CSSGen pour mes beenkastah.css. * Fichiers. Cela semble bien fonctionner pour la plupart.


0 commentaires

3
votes

J'ai eu un problème similaire, et je suis en fait à la racine de celui-ci. Il s'avère que j'avais mon propre get et supprimez les définitions de la fonction dans mon code. C'était en quelque sorte interférant avec Clojure.core's Get and Supprimer les définitions de la fonction dans cet espace de noms. Ces NPE (sur la compilation) étaient le résultat. Pour résoudre le problème, tout ce que j'ai fait était de renommer mes définitions de fonction à getk et à supprimer.

htth


1 commentaires

Utiliser des noms idiotes tels que getk défaite tout le point des espaces de noms :) Resorts to Report-Clojure est la solution propre.