javascript - Hvordan leser jeg en EDN-fil fra ClojureScript som kjører på NodeJS?
Jeg har en enkel datafil i EDN-format som jeg trenger å lese i en ClojureScript CLI-app som kjører på NodeJS, men ingen av de relevante kjernebibliotekene fra Clojure ser ut til å være tilgjengelige (core.java.io/read, clojure.edn/read, osv.)
Hva bør jeg bruke i stedet?
Svar #1
Du kunne bruke:
(ns app.core
(:require [cljs.reader :as reader]))
(def fs (js/require "fs"))
(defn read-edn [path f]
(.readFile fs path "utf8" (fn [err data] (f (reader/read-string data)))))
(defn process [coll])
(read-edn "/tmp/x.clj" process)
I eksemplet ovenfor ville process motta datastrukturen som ble lest fra filen. Du må implementere process og legge til feilbehandling i read-edn.
Svar #2
Eller enda enklere, bruk readFileSync (shadow-cljs-eksempel):
(require '["fs" :as fs]
'[cljs.reader :as reader])
(defn read-edn [path]
(-> (.readFileSync fs path "utf8")
reader/read-string))
(read-edn "/xxx/yyy/zzz/my-data.edn")
