5

この質問Node.js prompt '>' can't show in eshellは、ノード repl の問題を解決しますが、npm からノードを呼び出すと、その解決策は機能しません。

例によって、私が作るなら

$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sane defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
^[[1G^[[0Jname: (nodo1) ^[[15G

または、"scripts" : { "start" : "node" } を含む package.json がある場合

$ npm start
npm WARN package.json nodo1@0.0.1 No README.md file found!
> node

^[[1G^[[0J> ^[[3G

これは "start" : "env NODE_NO_READLINE=1 node" を使用して解決できることはわかっていますが、これをどこにでも書いても解決策が見つかりません。また、パッケージの他のユーザーは emacs を使用せず、別の方法で環境変数を設定する必要があるかもしれません。

npm 設定 NODE_NO_READLINE=1 のエイリアスを試してみましたが、同じ結果になりました

alias npm='env NODE_NO_READLINE=1 npm'
4

1 に答える 1

5

これは、多くのシェル フロントエンドがテキストの色付けに使用する特殊文字をフィルタリングする comint モードです。Emacs を介してシェル プログラムを操作したことがある場合は、"using a dum terminal or Emacs terminal" などのメッセージに慣れているでしょう。Emacsまたはダム端末が使用されていることを検出でき、それらが解釈できない文字を送信しない人もいますが、Nodeはそうしません。とにかく、次のようなものを使用できます。

(add-to-list
         'comint-preoutput-filter-functions
         (lambda (output)
           (replace-regexp-in-string "\\[[0-9]+[GK]" "" output)))

あなたの.emacsのどこかに。

Stackoverflow は制御文字を適切にコピーしません。正規表現の最初の文字 (引用符の直後、スラッシュの前) が^[文字です。次に入力することによって Emacs に入力できます。これC-q 0 3 3により、制御文字が現在のバッファーに挿入されます。

于 2012-11-02T09:05:23.243 に答える