在Python中有一個很好的功能,python -i
。例如,python -i myprogram.py
將運行該程序,然後進入交互模式,就好像我已將整個程序粘貼到交互式shell中一樣。什麼是python -i的node.js模擬:運行並進入交互模式?
node.js中是否有類似的命令?
在Python中有一個很好的功能,python -i
。例如,python -i myprogram.py
將運行該程序,然後進入交互模式,就好像我已將整個程序粘貼到交互式shell中一樣。什麼是python -i的node.js模擬:運行並進入交互模式?
node.js中是否有類似的命令?
我認爲節點可執行文件不允許您將-i
與任何其他文件參數結合使用。
這可能不是您想要閱讀的解決方案。但是,這對我有效。有一個叫做REPL的模塊,基本上可以讓你手動執行。所以,我意識到,我可以創建一個圍繞任何文件的包裝,如下所示:
#!/bin/bash
COMMAND=$(cat <<EOF
(function(){
var repl = require('repl');
process.stdin.push('.load ${1}\n');
repl.start({
useGlobal:true,
ignoreUndefined:true,
prompt:'> '
});
})();
EOF
)
node -e "${COMMAND}"
假如你把這個腳本nodejs
,那麼我可以把這個腳本做這樣的事情
nodejs ./demo.js
它啓動以編程方式REPL並將腳本加載到其中。這相當於手動打開REPL會話,然後運行命令.load <file>
。
此方法有我發現有一些缺點。腳本中的局部變量不可用於檢查,但全局是。 – osa
@SergeyOrshanskiy我已經編寫了一個新版本的程序,將您的腳本加載到當前會話中,而不是僅僅需要該模塊。這應該工作。 –
文檔在https://nodejs.org/api/cli.html
預壓在啓動時指定的模塊。
遵循require()的模塊解析規則。模塊可以是文件的路徑,也可以是節點模塊名稱的 路徑。
node -i -r ./myprogram.js
評估以下參數,如JavaScript。在REPL中預定義的模塊 也可以在腳本中使用。
node -i -e "console.log('A message')"
這些功能,因爲在2014年之前的響應與下面的拉請求已被添加。
有沒有辦法從REPL訪問所需的模塊? – Antimony
不幸的是,節點具有用於此沒有內建溶液。正如這裏所提到的,您可以使用-r
選項預加載模塊,但是您仍然無法從REPL訪問它們,因此有點無用。
到目前爲止,我已經找到了最好的解決方法是做
cat ./test.js - | node -i
哪裏test.js是要運行該文件。這通過stdin發送它,就好像你自己輸入了文件,然後等待額外的輸入。一個缺點是它會在命令提示符下將文件和每行結果回顯給您。
節點命令行實用程序還具有用於進入交互模式(即REPL)的'-i'修飾符,但如果您傳遞其他參數(如要執行的文件),則它不起作用。 –
[執行一些代碼然後進入交互式節點]的可能的重複(https://stackoverflow.com/questions/8549145/execute-some-code-and-then-go-into-interactive-node) – jpaugh