考慮以下瑣碎clojurescript程序:ClojureScript計劃的NodeJS不會接受控制檯參數
(ns node-test.core
(:require [cljs.nodejs :as node]))
(defn -main [& args]
(println "args: " args)
(let [one (first args) two (second args)]
(println "one: " one)
(println "two: " two)))
(set! *main-cli-fn* -main)
問題:如果我編譯這個沒有優化,這個計劃按預期工作。例如:
$ node program.js 1 2
=> args: (1, 2)
one: 1
two: 2
如果我編譯程序與先進的優化,那麼我的程序無法識別參數:
$ node program.js 1 2
=> args: nil
one: nil
two: nil
可能是什麼造成的?
編輯:添加以下實習醫生似乎解決該問題:
var node = {};
node.process = {};
node.process.argv = {};
此外,取出node
父對象,只是使用process
還修復它:
var process = {};
process.argv = {};
我但我不確定自己甚至能理解我自己的解決方案。我猜在幕後clojurescript正在將node.process.argv傳遞給-main?
通常你不會縮小node.js的代碼。無論如何,這是一個很好的問題。 – nha
等待 - 靶向時的NodeJS你不應該使用先進的編譯選項?爲什麼會這樣? – George
先進的編譯,以減少所產生的大小。js,這在瀏覽器中非常重要,因爲它將在頁面加載時下載,但在服務器端幾乎沒有用處 – DanLebrero