在运行时重新加载模块

斜杠

我正在考虑使用Socket.IO从.NET移植非常需要的(大量通信)基于套接字的体系结构到Node.JS。

我当前的系统是用.NET开发的,并且使用一些脚本语言,这些语言在运行时加载,因此,如果需要,可以通过向服务器发出重新加载命令来进行热修复,而不必重新启动其他服务器/调度程序。

我最初是以这种方式构建的,因此,正如我所说,我可以根据需要进行热修复,并通过透明的修复使系统可用。

我是Node.JS的新手,但这是我要完成的工作:

  • 在运行时按需加载javascript文件,将它们存储在变量中的某个位置,然后调用脚本函数。

最好的解决方案是什么?如何从运行时作为字符串加载的javascript文件中调用特定函数?我可以像需要一样以正常方式加载javascript文件,将其存储在变量中并调用函数吗?

谢谢!

马吉达里夫

如果我正确理解您的问题。您可以检出vm模块。

或者,如果您希望能够重新加载required文件,则必须清除缓存并重新加载文件,此软件包可以这样做。检查代码,您会明白的。

第一次加载模块后将对其进行缓存。这意味着(除其他事项外)每次对require('foo')的调用都将获得完全相同的返回对象,如果它将解析为同一文件。

多次调用require('foo')可能不会导致模块代码多次执行。这是一个重要功能。使用它,可以返回“部分完成”的对象,从而即使在可能导致循环的情况下,也可以加载传递依赖。

这里可以找到更多信息

  1. 删除缓存的模块:

    delete require.cache[require.resolve('./mymodule.js')]
    
  2. 再次要求它。(也许是require您可以调用的函数内部)

更新

我认识的人正在实施类似的方法。您可以在此处找到代码

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在运行时加载模块?

来自分类Dev

在运行时导入模块

来自分类Dev

在运行时导入模块

来自分类Dev

在运行时动态加载jar?

来自分类Dev

在运行时加载JSON文件

来自分类Dev

在运行时加载JSON文件

来自分类Dev

在运行时加载 BingMaps API

来自分类Dev

Wpf 在运行时加载 dll

来自分类Dev

如何使用Julia 1.5在运行时动态加载模块(或脚本)

来自分类Dev

检查是否在运行时从COM模块加载了WIN32 /非托管DLL

来自分类Dev

如何要求systemd服务在运行时重新加载其环境变量

来自分类Dev

在运行时重置/重新加载嵌套类的类属性

来自分类Dev

检查所有加载的模块是否来自操作系统或是否在运行时自动加载

来自分类Dev

在运行时将模块添加到python

来自分类Dev

PyQt:在运行时转换模块字符串

来自分类Dev

如何扩大在运行时模块路径

来自分类Dev

Typescript模块在运行时未定义

来自分类Dev

Jest:找出当前模块在运行时是否被模拟

来自分类Dev

Python:在运行时重新定义类方法

来自分类Dev

在运行时重新打开Skype是否有问题?

来自分类Dev

在运行时在AngularJS中加载JavaScript

来自分类Dev

OCaml在运行时进行编译和加载

来自分类Dev

在运行时同时加载两个场景

来自分类Dev

在运行时加载样式表

来自分类Dev

在运行时加载基因敲除库

来自分类Dev

在运行时动态加载Django应用

来自分类Dev

Fortran动态库,在运行时加载?

来自分类Dev

Node.js-在运行时加载文件

来自分类Dev

在运行时从jar文件加载的类上的FindClass