有没有办法在node.js中进入交互模式之前执行一些代码(在文件中或从字符串中,并不重要)?
例如,如果我创建一个__preamble__.js包含以下内容的脚本:
console.log("preamble executed! poor guy!");
Run Code Online (Sandbox Code Playgroud)
和用户输入node __preamble__.js他们获得此输出:
preamble executed! poor guy!
> [interactive mode]
Run Code Online (Sandbox Code Playgroud)
sla*_*cer 95
真的很老的问题,但......
我相信,我正在寻找类似的东西,并发现了这一点.您可以打开REPL(node在终端上键入)然后加载文件.像这样:.load ./script.js.按Enter键,将执行文件内容.现在,脚本中创建的所有内容(对象,变量,函数)都可用.
例如:
// script.js
var y = {
name: 'obj',
status: true
};
var x = setInterval(function () {
console.log('As time goes by...');
}, 5000);
Run Code Online (Sandbox Code Playgroud)
在REPL上:
//REPL
.load ./script.js
Run Code Online (Sandbox Code Playgroud)
现在,您键入REPL并与"生活代码"进行交互.你可以console.log(y)或clearInterval(x);
这将有点奇怪,导致"随着时间的流逝......"每五秒钟(或左右)继续出现.但它会奏效!
sar*_*old 26
您可以repl非常轻松地在Node软件中启动新功能:
var repl = require("repl");
var r = repl.start("node> ");
r.context.pause = pauseHTTP;
r.context.resume = resumeHTTP;
Run Code Online (Sandbox Code Playgroud)
从REPL内你就可以打电话pause()或resume()和执行功能pauseHTTP()和resumeHTTP()直接.只需将您想要公开的内容分配给REPL的context成员即可.
gne*_*kus 23
这可以通过当前版本的NodeJS(5.9.1)来实现:
$ node -i -e "console.log('A message')"
Run Code Online (Sandbox Code Playgroud)
该-e标志评估字符串,-i标志开始交互模式.
您可以在引用的pull请求中阅读更多内容
node -r允许您在REPL启动时需要一个模块.NODE_PATH设置模块搜索路径.所以你可以在命令行上运行这样的东西:
NODE_PATH=. node -r myscript.js
这应该会在加载脚本的情况下将您置于REPL中.
我最近开始了一个项目,为Node和相关语言(如CoffeeScript)创建一个高级交互式shell.其中一个功能是在启动时在解释器的上下文中加载文件或字符串,其中考虑了加载的语言.
http://danielgtaylor.github.com/nesh/
例子:
# Load a string (Javascript)
nesh -e 'var hello = function (name) { return "Hello, " + name; };'
# Load a string (CoffeeScript)
nesh -c -e 'hello = (name) -> "Hello, #{name}"'
# Load a file (Javascript)
nesh -e hello.js
# Load a file (CoffeeScript)
nesh -c -e hello.coffee
Run Code Online (Sandbox Code Playgroud)
然后在解释器中,您可以访问该hello功能.
编辑:忽略这一点。@jaywalking101 的答案要好得多。那就这样做吧。
如果您从 Bash shell(Linux、OS X、Cygwin)内部运行,那么
cat __preamble__.js - | node -i
Run Code Online (Sandbox Code Playgroud)
将工作。这也会在评估前导码.js的每一行时产生大量噪音,但之后您会在所需的上下文中进入交互式 shell。
(“-”到“cat”只是指定“使用标准输入”。)
| 归档时间: |
|
| 查看次数: |
22919 次 |
| 最近记录: |