繁体   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