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

Node.js 我可以在不重新启动nodejs应用程序的情况下刷新'node_modules'吗?,node.js,npm,updates,Node.js,Npm,Updates,当node.js应用程序运行时,是否可以刷新某些依赖项 例如,我正在使用一个特定版本的lodash,发布了一个新版本,我可以直接从我的应用程序触发刷新吗,或者我将添加必要的命令来编辑package.json并手动重建应用程序?只是为了弄清楚一些事实: 一旦加载了一个模块,操作代码就保存在JS解释器的内存中。更改磁盘上的文件完全没有影响 一旦加载了一个模块,而其他模块有一个对它的引用,就没有系统的方法用新的模块引用替换该模块引用。您可以从模块缓存中删除先前的模块,加载一个新模块,获取一个新模块句柄

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


例如,我正在使用一个特定版本的
lodash
,发布了一个新版本,我可以直接从我的应用程序触发刷新吗,或者我将添加必要的命令来编辑
package.json
并手动重建应用程序?

只是为了弄清楚一些事实:

  • 一旦加载了一个模块,操作代码就保存在JS解释器的内存中。更改磁盘上的文件完全没有影响
  • 一旦加载了一个模块,而其他模块有一个对它的引用,就没有系统的方法用新的模块引用替换该模块引用。您可以从模块缓存中删除先前的模块,加载一个新模块,获取一个新模块句柄,并手动告诉正在使用先前模块的每段代码,它们应该切换到使用新模块句柄,但这需要大量定制代码,在某些情况下,要使其正常工作,可能需要注意一些事项
  • node.js没有任何内置的方法来用新版本的代码替换代码
  • “升级”代码的通常方法是用更新的代码替换代码,然后重新启动应用程序,以便加载新版本的代码
  • 当node.js应用程序运行时,是否可以刷新某些依赖项

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

    例如,我正在使用lodash的一个特定版本,发布了一个新版本,我可以直接从我的应用程序触发刷新,还是添加必要的命令来编辑package.json并手动重建应用程序


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

    只是为了弄清一些事实:

  • 一旦加载了一个模块,操作代码就保存在JS解释器的内存中。更改磁盘上的文件完全没有影响
  • 一旦加载了一个模块,而其他模块有一个对它的引用,就没有系统的方法用新的模块引用替换该模块引用。您可以从模块缓存中删除先前的模块,加载一个新模块,获取一个新模块句柄,并手动告诉正在使用先前模块的每段代码,它们应该切换到使用新模块句柄,但这需要大量定制代码,在某些情况下,要使其正常工作,可能需要注意一些事项
  • node.js没有任何内置的方法来用新版本的代码替换代码
  • “升级”代码的通常方法是用更新的代码替换代码,然后重新启动应用程序,以便加载新版本的代码
  • 当node.js应用程序运行时,是否可以刷新某些依赖项

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

    例如,我正在使用lodash的一个特定版本,发布了一个新版本,我可以直接从我的应用程序触发刷新,还是添加必要的命令来编辑package.json并手动重建应用程序

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