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

Yoo*_*Yoo 12 javascript emacs node.js

我认为这会奏效:

(defun my-node ()
  (interactive)
  (pop-to-buffer (make-comint "my-node" "node")))
Run Code Online (Sandbox Code Playgroud)

但是当我这样做M-x my-node并进入1+1comint缓冲区时,它不会显示任何输出.

这是在Windows 7上的Emacs 24.0.50.1中安装的NodeJS没有任何特殊配置.

以非交互方式调用node.js,因为M-x compile RET node hello-world.js RET工作正常.node交互式运行cmd工作正常.

这可能是相关的:当我运行M-x shell并输入nodeshell缓冲区然后输入时1+1,它不会显示结果.我必须遗漏一些非常基本的东西.

更新:

可能相关:emacs/Python:在行缓冲与块缓冲模式下运行python-shell - Stack Overflow

bar*_*rik 12

将node.js(使用节点v0.8.1测试)作为Emacs下的劣质shell的最简单方法是使用js-comint包.然后,设置(setq inferior-js-program-command "node --interactive")为强制节点以交互模式运行.M-x run-js然后该命令将打开解释器.

同样,您可以轻松验证node --interactive在eshell 中的工作原理.


Yoo*_*Yoo 3

我找到了一个解决方案。

制作一个启动 JavaScript REPL 接口的节点脚本。

节点中的节点.js:

var repl = require("repl");
repl.start();
Run Code Online (Sandbox Code Playgroud)

将“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")))
Run Code Online (Sandbox Code Playgroud)

运行M-x my-node-shell以在 Windows Emacs 中运行 JavaScript shell。我不知道为什么这有效。Tab 补全、语法高亮、通过 Shift+Enter 的多行输入不起作用。