????JFIF??x?x????'
Server IP : 79.136.114.73 / Your IP : 3.149.7.172 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/doc/nodejs/api/ |
Upload File : |
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>REPL Node.js v0.10.25 Manual & Documentation</title> <link rel="stylesheet" href="assets/style.css"> <link rel="stylesheet" href="assets/sh.css"> <link rel="canonical" href="http://nodejs.org/api/repl.html"> </head> <body class="alt apidoc" id="api-section-repl"> <div id="intro" class="interior"> <a href="/" title="Go back to the home page"> <img id="logo" src="http://nodejs.org/images/logo-light.png" alt="node.js"> </a> </div> <div id="content" class="clearfix"> <div id="column2" class="interior"> <ul> <li><a href="/" class="home">Home</a></li> <li><a href="/download/" class="download">Download</a></li> <li><a href="/about/" class="about">About</a></li> <li><a href="http://npmjs.org/" class="npm">npm Registry</a></li> <li><a href="http://nodejs.org/api/" class="docs current">Docs</a></li> <li><a href="http://blog.nodejs.org" class="blog">Blog</a></li> <li><a href="/community/" class="community">Community</a></li> <li><a href="/logos/" class="logos">Logos</a></li> <li><a href="http://jobs.nodejs.org/" class="jobs">Jobs</a></li> </ul> <p class="twitter"><a href="http://twitter.com/nodejs">@nodejs</a></p> </div> <div id="column1" class="interior"> <header> <h1>Node.js v0.10.25 Manual & Documentation</h1> <div id="gtoc"> <p> <a href="index.html" name="toc">Index</a> | <a href="all.html">View on single page</a> | <a href="repl.json">View as JSON</a> </p> </div> <hr> </header> <div id="toc"> <h2>Table of Contents</h2> <ul> <li><a href="#repl_repl">REPL</a><ul> <li><a href="#repl_repl_start_options">repl.start(options)</a><ul> <li><a href="#repl_event_exit">Event: 'exit'</a></li> </ul> </li> <li><a href="#repl_repl_features">REPL Features</a></li> </ul> </li> </ul> </div> <div id="apicontent"> <h1>REPL<span><a class="mark" href="#repl_repl" id="repl_repl">#</a></span></h1> <p>A Read-Eval-Print-Loop (REPL) is available both as a standalone program and easily includable in other programs. The REPL provides a way to interactively run JavaScript and see the results. It can be used for debugging, testing, or just trying things out. </p> <p>By executing <code>node</code> without any arguments from the command-line you will be dropped into the REPL. It has simplistic emacs line-editing. </p> <pre><code>mjr:~$ node Type '.help' for options. > a = [ 1, 2, 3]; [ 1, 2, 3 ] > a.forEach(function (v) { ... console.log(v); ... }); 1 2 3</code></pre> <p>For advanced line-editors, start node with the environmental variable <code>NODE_NO_READLINE=1</code>. This will start the main and debugger REPL in canonical terminal settings which will allow you to use with <code>rlwrap</code>. </p> <p>For example, you could add this to your bashrc file: </p> <pre><code>alias node="env NODE_NO_READLINE=1 rlwrap node"</code></pre> <h2>repl.start(options)<span><a class="mark" href="#repl_repl_start_options" id="repl_repl_start_options">#</a></span></h2> <p>Returns and starts a <code>REPLServer</code> instance. Accepts an "options" Object that takes the following values: </p> <ul> <li><p><code>prompt</code> - the prompt and <code>stream</code> for all I/O. Defaults to <code>> </code>.</p> </li> <li><p><code>input</code> - the readable stream to listen to. Defaults to <code>process.stdin</code>.</p> </li> <li><p><code>output</code> - the writable stream to write readline data to. Defaults to <code>process.stdout</code>.</p> </li> <li><p><code>terminal</code> - pass <code>true</code> if the <code>stream</code> should be treated like a TTY, and have ANSI/VT100 escape codes written to it. Defaults to checking <code>isTTY</code> on the <code>output</code> stream upon instantiation.</p> </li> <li><p><code>eval</code> - function that will be used to eval each given line. Defaults to an async wrapper for <code>eval()</code>. See below for an example of a custom <code>eval</code>.</p> </li> <li><p><code>useColors</code> - a boolean which specifies whether or not the <code>writer</code> function should output colors. If a different <code>writer</code> function is set then this does nothing. Defaults to the repl's <code>terminal</code> value.</p> </li> <li><p><code>useGlobal</code> - if set to <code>true</code>, then the repl will use the <code>global</code> object, instead of running scripts in a separate context. Defaults to <code>false</code>.</p> </li> <li><p><code>ignoreUndefined</code> - if set to <code>true</code>, then the repl will not output the return value of command if it's <code>undefined</code>. Defaults to <code>false</code>.</p> </li> <li><p><code>writer</code> - the function to invoke for each command that gets evaluated which returns the formatting (including coloring) to display. Defaults to <code>util.inspect</code>.</p> </li> </ul> <p>You can use your own <code>eval</code> function if it has following signature: </p> <pre><code>function eval(cmd, context, filename, callback) { callback(null, result); }</code></pre> <p>Multiple REPLs may be started against the same running instance of node. Each will share the same global object but will have unique I/O. </p> <p>Here is an example that starts a REPL on stdin, a Unix socket, and a TCP socket: </p> <pre><code>var net = require("net"), repl = require("repl"); connections = 0; repl.start({ prompt: "node via stdin> ", input: process.stdin, output: process.stdout }); net.createServer(function (socket) { connections += 1; repl.start({ prompt: "node via Unix socket> ", input: socket, output: socket }).on('exit', function() { socket.end(); }) }).listen("/tmp/node-repl-sock"); net.createServer(function (socket) { connections += 1; repl.start({ prompt: "node via TCP socket> ", input: socket, output: socket }).on('exit', function() { socket.end(); }); }).listen(5001);</code></pre> <p>Running this program from the command line will start a REPL on stdin. Other REPL clients may connect through the Unix socket or TCP socket. <code>telnet</code> is useful for connecting to TCP sockets, and <code>socat</code> can be used to connect to both Unix and TCP sockets. </p> <p>By starting a REPL from a Unix socket-based server instead of stdin, you can connect to a long-running node process without restarting it. </p> <p>For an example of running a "full-featured" (<code>terminal</code>) REPL over a <code>net.Server</code> and <code>net.Socket</code> instance, see: <a href="https://gist.github.com/2209310">https://gist.github.com/2209310</a> </p> <p>For an example of running a REPL instance over <code>curl(1)</code>, see: <a href="https://gist.github.com/2053342">https://gist.github.com/2053342</a> </p> <h3>Event: 'exit'<span><a class="mark" href="#repl_event_exit" id="repl_event_exit">#</a></span></h3> <p><code>function () {}</code> </p> <p>Emitted when the user exits the REPL in any of the defined ways. Namely, typing <code>.exit</code> at the repl, pressing Ctrl+C twice to signal SIGINT, or pressing Ctrl+D to signal "end" on the <code>input</code> stream. </p> <p>Example of listening for <code>exit</code>: </p> <pre><code>r.on('exit', function () { console.log('Got "exit" event from repl!'); process.exit(); });</code></pre> <h2>REPL Features<span><a class="mark" href="#repl_repl_features" id="repl_repl_features">#</a></span></h2> <!-- type=misc --> <p>Inside the REPL, Control+D will exit. Multi-line expressions can be input. Tab completion is supported for both global and local variables. </p> <p>The special variable <code>_</code> (underscore) contains the result of the last expression. </p> <pre><code>> [ "a", "b", "c" ] [ 'a', 'b', 'c' ] > _.length 3 > _ += 1 4</code></pre> <p>The REPL provides access to any variables in the global scope. You can expose a variable to the REPL explicitly by assigning it to the <code>context</code> object associated with each <code>REPLServer</code>. For example: </p> <pre><code>// repl_test.js var repl = require("repl"), msg = "message"; repl.start("> ").context.m = msg;</code></pre> <p>Things in the <code>context</code> object appear as local within the REPL: </p> <pre><code>mjr:~$ node repl_test.js > m 'message'</code></pre> <p>There are a few special REPL commands: </p> <ul> <li><code>.break</code> - While inputting a multi-line expression, sometimes you get lost or just don't care about completing it. <code>.break</code> will start over.</li> <li><code>.clear</code> - Resets the <code>context</code> object to an empty object and clears any multi-line expression.</li> <li><code>.exit</code> - Close the I/O stream, which will cause the REPL to exit.</li> <li><code>.help</code> - Show this list of special commands.</li> <li><code>.save</code> - Save the current REPL session to a file<blockquote> <p>.save ./file/to/save.js</p> </blockquote> </li> <li><code>.load</code> - Load a file into the current REPL session.<blockquote> <p>.load ./file/to/load.js</p> </blockquote> </li> </ul> <p>The following key combinations in the REPL have these special effects: </p> <ul> <li><code><ctrl>C</code> - Similar to the <code>.break</code> keyword. Terminates the current command. Press twice on a blank line to forcibly exit.</li> <li><code><ctrl>D</code> - Similar to the <code>.exit</code> keyword.</li> </ul> </div> </div> </div> <div id="footer"> <a href="http://joyent.com" class="joyent-logo">Joyent</a> <ul class="clearfix"> <li><a href="/">Node.js</a></li> <li><a href="/download/">Download</a></li> <li><a href="/about/">About</a></li> <li><a href="http://npmjs.org/">npm Registry</a></li> <li><a href="http://nodejs.org/api/">Docs</a></li> <li><a href="http://blog.nodejs.org">Blog</a></li> <li><a href="/community/">Community</a></li> <li><a href="/logos/">Logos</a></li> <li><a href="http://jobs.nodejs.org/">Jobs</a></li> <li><a href="http://twitter.com/nodejs" class="twitter">@nodejs</a></li> </ul> <p>Copyright <a href="http://joyent.com/">Joyent, Inc</a>, Node.js is a <a href="/trademark-policy.pdf">trademark</a> of Joyent, Inc. View <a href="https://raw.github.com/joyent/node/v0.10.25/LICENSE">license</a>.</p> </div> </body> </html>