我正在使用 ClojureScript 和 Figwheel,试图在 ClojureScript 中使用 CraftyJs。
这是我的 project.clj 文件:
(defproject my_project "0.1.0-SNAPSHOT")
:description "FIXME: write this!"
:url "
http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "
http://www.eclipse.org/legal/epl-v10.html"}
:min-lein-version "2.7.1"
:dependencies [[org.clojure/clojure "1.9.0"]
[org.clojure/clojurescript "1.10.238"]
[org.clojure/core.async "0.4.474"]]
:plugins [[lein-figwheel "0.5.16"]
[lein-cljsbuild "1.1.7" :exclusions [[org.clojure/clojure]]]]
:source-paths ["src"]
:cljsbuild {:builds
[{:id "dev"
:source-paths ["src"]
;; The presence of a :figwheel configuration here
;; will cause figwheel to inject the figwheel client
;; into your build
:figwheel {:on-jsload "my_project.core/on-js-reload"
;; :open-urls will pop open your application
;; in the default browser once Figwheel has
;; started and compiled your application.
;; Comment this out once it no longer serves you.
:open-urls ["https://127.0.0.1:3449/index.html"]}
:compiler {:main my_project.core
:asset-path "js/compiled/out"
:install-deps true
:npm-deps {:craftyjs "0.8.0"}
:output-to "resources/public/js/compiled/my_project.js"
:output-dir "resources/public/js/compiled/out"
:source-map-timestamp 真的
 ); 要在控制台输出 CLJS 数据结构,请确保在 Chrome 中启用开发工具
 .;
https://github.com/binaryage/cljs-devtools :preloads [devtools.preload]}]}
接下来构建是一个压缩的简化版本,适用于
生产。您可以使用
lein cljsbuild once min
{:id "min"}]
:source-paths ["src"]
:compiler {:output-to "resources/public/js/compiled/my_project.js"
:main my_project.core
:optimizations :advanced
:pretty-print false}}]}
:figwheel {;; :http-server-root "public" ;; default and assumes "resources"
;; :server-port 3449 ;; default
;; :server-ip "127.0.0.1"
:css-dirs ["resources/public/css"] ;; watch and update CSS
;; Start an nREPL server into the running figwheel process
;; :nrepl-port 7888
;; Server Ring Handler (optional)
;; if you want to embed a ring handler into the figwheel http-kit
;; server, this is for simple ring servers, if this
;; doesn't work for you just run your own server :) (see lein-ring)
;; :ring-handler hello_world.server/handler
;; 为了能从抬头显示打开编辑器中的文件。
;; 你需要在你的路径上放一个脚本。
;; 那个脚本将需要接受一个文件路径和一个行号
;; 例如:在 ~/bin/myfile-opener
;; #! /bin/sh
;; emacsclient -n +$2 $1
;;
;; :open-file-command "myfile-opener"
;; 如果你在使用 emacsclient 你可以只需使用
;; :open-file-command "emacsclient"
;; 如果你想禁用 REPL
;; :repl false
;; 要配置不同的 figwheel 日志文件路径
;; :server-logfile "tmp/logs/figwheel-logfile.log"
;; 将所有输出管道到 repl 中
;; :server-logfile false
}
;; 为Figwheel和ClojureScript开发配置nREPL
;; 请见
;;
https://github.com/bhauman/lein-figwheel/wiki/Using-the-Figwheel-REPL-within-NRepl :profiles {:dev {:dependencies [[binaryage/devtools "0.9.9"]
[figwheel-sidecar "0.5.16"]
[cider/piggieback "0.3.1"]]
;; 需要在此处添加dev源路径以便加载user.clj
:source-paths ["src" "dev"]
;; 对于CIDER
;; :plugins [[cider/cider-nrepl "0.12.0"]]
:repl-options {:nrepl-middleware [cider.piggieback/wrap-cljs-repl]}
;; 需要添加编译好的资源到 :clean-targets
:clean-targets ^{:protect false} ["resources/public/js/compiled"
:target-path]}})
然而在运行lein figwheel时,我在控制台看到以下信息
编译构建:dev到"resources/public/js/compiled/my_project.js"从["src"]...
[eval]:85
!id.startsWith(goog:);
^^^^
SyntaxError: missing ) after argument list
at createScript (vm.js:74:10)
at Object.runInThisContext (vm.js:116:10)
at Object.<anonymous> ([eval]-wrapper:6:22)
at Module._compile (module.js:624:30)
at evalScript (bootstrap_node.js:480:27)
at startup (bootstrap_node.js:177:9)
at bootstrap_node.js:626:3
成功编译构建:dev到"resources/public/js/compiled/my_project.js"耗时19.529秒。
并且我无法从ClojureScript中导入库,我还看到以下错误
未捕获错误:未定义的名称 craftyjs
at visitNode (base.js:1357)
at Object.goog.writeScripts_ (base.js:1369)
at Object.goog.require [as require_figwheel_backup_] (base.js:706)
at index.html:14
我已经尝试手动删除编译的JS输出文件夹