簡體   English   中英

如何在Windows上的Emacs中以交互方式運行node.js

[英]how to run node.js interactively in Emacs on Windows

我認為這會奏效:

(defun my-node ()
  (interactive)
  (pop-to-buffer (make-comint "my-node" "node")))

但是當我執行Mx my-node並在comint緩沖區中輸入1+1時,它不會顯示任何輸出。

這是在Windows 7上的Emacs 24.0.50.1中安裝的NodeJS沒有任何特殊配置。

非接觸地調用node.js,如在Mx compile RET node hello-world.js RET工作正常。 cmd交互方式運行node工作正常。

這可能是相關的:當我運行Mx shell並在shell緩沖區中輸入node然后輸入1+1 ,它不會顯示結果。 我必須遺漏一些非常基本的東西。

更新:

可能相關: emacs / Python:在行緩沖與塊緩沖模式下運行python-shell - Stack Overflow

將node.js(使用節點v0.8.1測試)作為Emacs下的劣質shell的最簡單方法是使用js-comint包。 然后,設置(setq inferior-js-program-command "node --interactive")以強制節點以交互模式運行。 然后命令Mx run-js將打開解釋器。

同樣,您可以輕松驗證node --interactive是否在eshell中工作。

http://www.gnu.org/software/emacs/windows/Sub_002dprocesses.html看,可能發生的事情是輸出是由節點緩沖的。 如果有一個選項可以修改它的緩沖,你可以嘗試傳遞它。

可能還有另一種方法可以解決它,假設這是一個緩沖問題,但我的Windows知識還不夠完整。 我認為,在Windows平台上,我會喜歡這種解決方案的一般解決方案,當它突然出現時,這是一個令人討厭的問題。

我找到了一個解決方案

創建一個啟動JavaScript REPL接口的節點腳本。

節點在-的node.js:

var repl = require("repl");
repl.start();

將“node path \\ to \\ node-in-node.js”傳遞給make-comint而不是簡單的“node”。

(defun my-node-shell ()
  (interactive)
  (pop-to-buffer (make-comint "Node Shell" "node" nil "C:\\run\\node-in-node.js")))

運行Mx my-node-shell以在Windows Emacs中運行JavaScript shell。 我不知道為什么會這樣。 通過Shift + Enter選項卡完成,語法突出顯示,多行輸入不起作用。

如果js-comint不適合您,您可以嘗試

 (defun node-repl () (interactive) (setenv "NODE_NO_READLINE" "1") ;avoid fancy terminal codes (pop-to-buffer (make-comint "node-repl" "node" nil "--interactive"))) (node-repl) 

js-comint方式似乎更好用。

暫無
暫無

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

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