【问题标题】:how to run node.js interactively in Emacs on Windows如何在 Windows 上的 Emacs 中交互式运行 node.js
【发布时间】:2012-01-18 12:07:23
【问题描述】:

我认为这会起作用:

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

但是当我执行M-x my-node 并在comint 缓冲区中输入1+1 时,它不会显示任何输出。

这是在 Windows 7 上的 Emacs 24.0.50.1 中,NodeJS 无需任何特殊配置即可安装。

M-x compile RET node hello-world.js RET 那样以非交互方式调用 node.js 可以正常工作。在cmd 中以交互方式运行node 工作正常。

这可能与此有关:当我运行 M-x shell 并在 shell 缓冲区中输入 node 然后输入 1+1 时,它不会显示结果。我一定遗漏了一些非常基本的东西。

更新:

可能相关:emacs/Python: running python-shell in line buffered vs. block buffered mode - Stack Overflow

【问题讨论】:

    标签: javascript node.js emacs


    【解决方案1】:

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

    同样,您可以轻松验证 node --interactive 在 eshell 中工作。

    【讨论】:

    【解决方案2】:

    http://www.gnu.org/software/emacs/windows/Sub_002dprocesses.html 看来,可能发生的情况是输出正在被节点缓冲。如果有一个选项可以修改它的缓冲,你可以尝试传递它。

    假设这是一个缓冲问题,可能还有另一种解决方法,但我的 Windows 知识还不够完整,无法知道。一方面,我喜欢在 Windows 平台上解决这个问题,当它突然出现时,这是一个烦人的问题。

    【讨论】:

      【解决方案3】:

      我找到了一个解决方案。

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

      node-in-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")))
      

      运行 M-x my-node-shell 在 Windows Emacs 中运行 JavaScript shell。我不知道为什么会这样。制表符补全、语法高亮、Shift+Enter 多行输入不起作用。

      【讨论】:

      • 对于最新版本的节点repl.start()需要替换为repl.start({prompt:'> '})
      【解决方案4】:

      如果js-comint不适合你,你可以try:

      (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)
      

      The js-comint way 似乎效果更好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-13
        • 2016-09-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多