我可以在不重新启动nodejs应用程序的情况下刷新`node_modules`吗?

时间:2017-11-14 01:37:33

标签: node.js npm updates

当node.js应用程序运行时,是否可以刷新一些依赖项?

例如,我使用特定版本的lodash,发布了新版本,我是否可以直接从我的应用中触发刷新,或者我需要添加必要的编辑{{ 1}}并手动重建应用程序?

1 个答案:

答案 0 :(得分:2)

只是为了得到一些事实:

  1. 加载模块后,操作代码将存在于JS解释器的内存中。更改磁盘上的文件完全没有任何影响。
  2. 一旦加载了一个模块并且其他模块都引用了它,就没有系统的方法用一个新模块替换该模块参考。您可以想象从模块缓存中删除先前的模块,加载新模块,获取新的模块句柄并手动告诉使用先前模块的每一段代码,他们应该切换到使用新模块句柄,但是&# 39;许多自定义代码,在某些情况下可能会有一些注意事项使其正常工作。
  3. node.js没有任何内置方法可以用新版本的代码替换代码。
  4. 通常的升级方式"您的代码是用更新的代码替换代码,然后重新启动您的应用程序,以便加载新版本的代码。
  5.   

    当node.js应用程序运行时,是否可以刷新一些依赖项?

    因此,从模块缓存中手动删除模块在技术上是可行的,然后手动加载模块的更新版本,然后手动告诉每个使用旧模块句柄的人他们应该切换到新模块句柄。但是,这一切都假设原始模块中没有需要保留的状态,并假设您有某种方式为模块的每个用户提供一个新的模块句柄。它是一个有很多限制的大型手工编码项目(例如只能在非常有限的情况下工作)。

      

    例如,我使用特定版本的lodash,发布了新版本,我是否可以直接从我的应用程序触发刷新,或者我需要添加编辑package.json和重建应用程序的必要条件手动?

    用更新的代码替换代码,重新启动您的应用。这是通常的方式。