簡體   English   中英

Clojurescript + Node.js 0.12.7問題(錯誤“ process.binding('evals')無此類模塊:evals”)

[英]Clojurescript + Node.js 0.12.7 issue (error “process.binding('evals') No such module: evals”)

我正在嘗試使用Node.js + ClojureScript,並且為此找到了一篇文章。

http://www.mase.io/code/clojure/node/2015/01/24/getting-started-with-clojurecript-and-node/

按照說明查找此錯誤:

  process.binding('evals').NodeScript.runInThisContext.call(
          ^
Error: No such module: evals
    at Error (native)

問題似乎是我需要使用舊版本的節點: https : //groups.google.com/forum/#!topic / clojurescript / VneLWVpwe6ohttps://github.com/kanso/kanso/issues/422

我的是0.12.7

pow> node --version
v0.12.7

在這種情況下,我可能需要使用舊版本的節點,但是更好的是,有沒有辦法繞過此問題? 如果不存在,如何在Mac OS X中使用舊版本的node.js?

編輯

https://github.com/creationix/nvm之后,我可以安裝0.10.32版本的node.js。

pow> nvm install 0.10.32
pow> node --version
v0.10.32

但是,它給了我另一個錯誤消息:

pow> node entrypoint.js 
Hello world!

/Users/smcho/Desktop/clojurescript/pow/out/server/cljs/core.js:12133
var fixed_arity = f.cljs$lang$maxFixedArity;
                   ^
TypeError: Cannot read property 'cljs$lang$maxFixedArity' of null

EDIT2

該錯誤是因為我忘記更新core.cljs模塊,使其包含((set! *main-cli-fn* -main) 。它在原始文章中已與https://groups.google.com/forum一起提及。 /#!topic / clojurescript / DYpsiCmsyIshttps://github.com/clojure/clojurescript/wiki/Quick-Start#running-clojurescript-on-nodejs

文章中可以看出,有兩種方法可以使其在Mac OSX上運行,這兩種方法需要不同版本的node.js,這在文章中並未明確解釋。

與舊的node.js兼容的版本

_project.clj
#!/bin/bash
lein new mies pow
cd pow
cp ../_project.clj project.clj

mkdir src/server
mv src/pow src/server/

lein cljsbuild once
cp ../entrypoint.js .

/Users/smcho/.nvm/v0.10.32/bin/node entrypoint.js
entry.js
 // entrypoint.js require("./out/server/goog/bootstrap/nodejs"); require("./out/server/pow"); require("./out/server/pow/core"); 
運行執行舊的node.js的腳本
cd pow
lein cljsbuild once
node out/server/pow.js

與新的node.js一起使用的版本

修改_project.clj
 :optimizations :simple <- :source-map "out/server/pow.js.map" <- 

運行runme.sh的第一部分

 lein new mies pow cd pow cp ../_project.clj project.clj mkdir src/server mv src/pow src/server/ 
修改core.clj
 (ns pow.core (:require [clojure.browser.repl :as repl])) (enable-console-print!) (defn -main [] (println "Hello world!")) (set! *main-cli-fn* -main) 
然后是shell腳本的第二部分
 cd pow lein cljsbuild once node out/server/pow.js 

多一點

我想使用ClojureScript / Node.js來在不使用Web瀏覽器的情況下測試clojureScript代碼。 我找到了LightTable ,並找到了一個很好的教程 我需要做的就是打開LightTable,連接到LightTable UI作為輸出,然后執行腳本。 因此,到目前為止,我沒有太多理由使用ClojureScript / Node.js。

在此處輸入圖片說明

我通過兩個步驟解決了這個問題:

1)聲明main功能

(ns testproj.core
  (:require
            [clojure.browser.repl :as repl]))

(enable-console-print!)

(defn -main []
  (println "Hello world!"))

(set! *main-cli-fn* -main)

2)設置optimizations: simple在我的project.clj中很optimizations: simple ,如本博客文章的底部所述。 出於我不知道的原因, optimizations: none事情可以解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM