javascript 如何从NodeJS上运行的ClojureScript读取EDN文件?

c9qzyr3d  于 2023-06-04  发布在  Java
关注(0)|答案(2)|浏览(156)

我有一个EDN格式的简单数据文件,我需要在NodeJS上运行的ClojureScript cli应用程序中读取,但Clojure的相关核心库似乎都不可用(core.java.io/read,clojure.edn/read等)。
我应该用什么来代替呢?

83qze16e

83qze16e1#

您可以用途:

(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添加错误处理。

332nm8kg

332nm8kg2#

或者更简单地使用readFileSyncshadow-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")

相关问题