جافاسكريبت - كيف يمكنني قراءة ملف EDN من ClojureScript يعمل على NodeJS؟
لدي ملف بيانات بسيط بصيغة EDN أحتاج إلى قراءته في تطبيق ClojureScript cli يعمل على NodeJS، لكن لا يبدو أن أي من المكتبات الأساسية ذات الصلة من Clojure متاحة (core.java.io/read، clojure.edn/read، إلخ).
ماذا يجب أن أستخدم بدلاً من ذلك؟
الإجابة رقم 1
يمكنك استخدام:
(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)
في المثال أعلاه، ستتلقى process هيكل البيانات الذي تم قراءته من الملف. ستحتاج إلى تنفيذ process وإضافة معالجة الأخطاء إلى read-edn.
الإجابة رقم 2
أو حتى أسهل استخدم readFileSync (مثال shadow-cljs):
(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")
