2016-10-14 13 views
0

나는 아주 간단한 프로젝트를 가지고 있습니다. 나는 boot와 cljs로 가장 간단한 프로젝트를 만들었다. 그것은 성공적으로 컴파일하고 html에서 올바른 로그를 볼 수있었습니다. 내가 비동기에 대한 기본적인 지원을 추가 할 때 나는 메시지를 받았습니다 :간단한 부팅 프로젝트가 cljs 및 async와 작동하지 않습니다.

No such namespace: clojure.core.async, could not locate clojure/core/async.cljs, clojure/core/async.cljc, or Closure namespace "clojure.core.async" 

프로젝트 단지의 구조는 다음과 같습니다 index.html을의

exemplo_cljs 
    html 
     index.html 
    src 
     exemplo_cljs 
      core.cljs 
    build.boot 

내용 :

<!doctype html> 
<html lang="en"> 
    <head> 
     <title>Hello</title> 
    </head> 
    <body> 
     <h2>Hello</h2> 
     <script src="main.js"></script> 
    </body> 
</html> 

핵심 .cljs

(ns exemplo-cljs.core 
    (:require [clojure.core.async :as async])) 

(def exercise (async/chan)) 

;; enable cljs to print to the JS console of the browser 
(enable-console-print!) 

;; print to the console 
(println "Hello, World 4!") 

및 build.boot

(set-env! 
:source-paths #{"src"} 
:resource-paths #{"html"} 

:dependencies '[[adzerk/boot-cljs "1.7.170-3"] 
       [org.clojure/core.async "0.2.371"]]) 

(require '[adzerk.boot-cljs :refer [cljs]]) 

원래 작업 프로젝트를 제외하고는 동일한 기본 구조를 가지고 있던 요구와 core.cljs 파일의 채널 데프 때문 년대 build.boot

답변

2

에서 추가 종속성 ClojureScript에서 core.async는 clojure.core.async이 아닌 cljs.core.async 아래에 있습니다. 이 lein에서 일을 몇 가지 이상한 이유로

(ns exemplo-cljs.core 
    (:require [cljs.core.async :as async])) 
+0

:

그래서 당신은 당신의 NS 양식을 변경해야합니다. 부팅 할 때 혼란스러워졌습니다. –

+1

cljs 버전이 다른가요? cljs/Clojure import 네임 스페이스가 최근에 변경되었다고 생각했습니다. 참조 : http://blog.fikesfarm.com/posts/2016-07-03-clojurescript-clojure-namespace-aliasing.html –