2016-11-28 58 views
1

在node.js中,您可以傳遞參數-i以獲取交互式控制檯,然後通過-e來評估JavaScript語句。爲什麼我無法評估.load在node.js中啓動交互式腳本?

我試圖運行:

$ node -i -e '.load ./someScript.js' 
.load someScript.js; 
^ 

SyntaxError: Unexpected token . 
    at Object.exports.runInThisContext (vm.js:53:16) 
    at Object.<anonymous> ([eval]-wrapper:6:22) 
    at Module._compile (module.js:410:26) 
    at node.js:578:27 
    at nextTickCallbackWith0Args (node.js:419:9) 
    at process._tickCallback (node.js:348:13) 

我得到一個錯誤,但如果我嘗試從交互節點提示符下運行同樣的事情,它加載就好了;即

> .load ./someScript.js 

還有什麼我需要做的,以使這項工作?

+1

不是一個真正的答案,但爲什麼你不能運行'節點someScript.js'? – Whymarrh

+0

這不會以交互模式加載腳本。我試過'$ node -i'./ someScript.js'',如果我這樣做,它就退出。 – leeand00

回答

1

爲什麼我無法評估.load在node.js中啓動交互式腳本?

因爲-e用於評估JavaScript代碼。交互式REPL的命令不是JavaScript,它們是REPL交互式命令。

This question詢問如何在運行腳本後進行交互,該腳本不回答「爲什麼」部分(這就是爲什麼我已經發布了上述內容),但其答案可能會爲您提供一些選項,用於隱含的「 ...我該怎麼做呢?「部分。 :-)

+0

反正有什麼方法加載它們嗎?或者我需要創建一個模塊並使用'-r'選項?我也嘗試將我想要使用的代碼弄平,並在'-e'中運行它,甚至使用'-i'我最終沒有提示。 – leeand00

+0

@ leeand00:LOL,請參閱上面的修改。 –

+0

這一個伎倆: http://stackoverflow.com/a/13386057/18149 – leeand00

1

也許你可以使用自定義腳本從其module啓動REPL:

喜歡的東西:

const repl = require('repl'), 
     path = require('path'), 
     location = process.argv[2], 
     base = path.basename(location), 
     clean = path.split('.')[0]; 

const r = repl.start('> '); 
Object.defineProperty(r.context, clean, { 
    configurable: false, 
    enumerable: true, 
    value: require(location) 
}); 

所以,現在你可以做node loadModule /path/to/load.js,該模塊將可根據在路徑的基礎上(/path/to/load.js將在load例如)

相關問題