是否有一种方法可以在 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应用程序.

Javascript相关问答推荐

深嵌套的ng-container元素仍然可以在Angular 布局组件中正确渲染内容吗?

node TS:JWT令牌签名以验证客户端和后台问题之间的身份验证

模块与独立组件

Chart.js V4切换图表中的每个条,同时每个条下有不同的标签.怎么做?

通过嵌套模型对象进行Mongoose搜索

成功完成Reducers后不更新状态

如何用拉威尔惯性Vue依赖下拉?

cypress中e2e测试上的Click()事件在Switch Element Plus组件上使用时不起作用

实现JS代码更改CSS元素

无法使用单击按钮时的useState将数据从一个页面传递到另一个页面

以编程方式聚焦的链接将被聚焦,但样式不适用

删除元素属性或样式属性的首选方法

在Odoo中如何以编程方式在POS中添加产品

FileReader()不能处理Firefox和GiB文件

构建器模式与参数对象输入

如何在加载页面时使锚定标记成为焦点

使用静态函数保存 node 前的钩子

在每次重新加载页面时更改指针光标

带有JS模块模式的Rails的Importmap错误:";Net::ERR_ABORTED 404(未找到)&Quot;

如何使用Reaction/Redux创建购物车逻辑?