![](/img/trans.png)
[英]node.js Internals: How can I find out where `process.binding('eval')` gets defined?
[英]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 / VneLWVpwe6o和https://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
該錯誤是因為我忘記更新core.cljs模塊,使其包含((set! *main-cli-fn* -main)
。它在原始文章中已與https://groups.google.com/forum一起提及。 /#!topic / clojurescript / DYpsiCmsyIs和https://github.com/clojure/clojurescript/wiki/Quick-Start#running-clojurescript-on-nodejs 。
從文章中可以看出,有兩種方法可以使其在Mac OSX上運行,這兩種方法需要不同版本的node.js,這在文章中並未明確解釋。
#!/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
:optimizations :simple <- :source-map "out/server/pow.js.map" <-
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.