是否有一种方法可以在 node 运行时运行命令.js服务器处于活动状态(启动后)并访问所有函数/变量等?
例如
在运行node server.js
之后,有没有办法通过命令行在实时环境中执行函数或运行命令?
是否有一种方法可以在 node 运行时运行命令.js服务器处于活动状态(启动后)并访问所有函数/变量等?
例如
在运行node server.js
之后,有没有办法通过命令行在实时环境中执行函数或运行命令?
您可以随时使用the repl
core module启动REPL.使用useGlobal
可以共享全局范围,使用context
可以在任何需要的本地上下文中传递:
import repl from 'repl'
const r = repl.start({ useGlobal: true })
r.context.someStuff = 123 // will be accessible as someStuff in REPL
然后在控制台中得到通常的提示,您可以与之交互以运行命令和查看变量.它与您的应用程序在同一个过程中运行,因此您可以导入/要求模块并访问它们的导出等,它们的数据将与您的其余代码共享.
如果您想在代码中的某个特定点插入这个函数,并在那里获得对局部变量的完全访问,可以使用一个自定义eval
函数,在局部范围内调用JavaScript的eval
:
repl.start({
eval: (cmd, context, filename, callback) => {
with (context) callback(null, eval(cmd))
}
})
(注意:这样,用let
定义新变量将无法跨命令工作.)
要在编程REPL中获取历史记录,可以查看repl-story
个或类似的包.
如果您想通过web浏览器远程访问类似的控制台(小心-安全风险-最好仅通过SSH端口转发提供),请查看node-browser-repl
.
不过,如果您想了解完整的调试器体验,请查看T.J. Crowder's answer篇关于如何将DevTools附加到 node 的文章.js应用程序.