Skip to content
This repository was archived by the owner on Apr 8, 2020. It is now read-only.
This repository was archived by the owner on Apr 8, 2020. It is now read-only.

Live updating server-side node code. #198

Closed
@pauldotknopf

Description

@pauldotknopf

I just wrote a module that auto-reloads a javascript file in node by watching the file system.

hot-instance

I'd like this repo to be able to use this to avoid having to restart node to get new server-side code loaded.

Now, I could implement my own module that is called via InvokeAsync's moduleName parameter. However, my application is using the that parameter for other purposes (MVC Areas if you must), and I would like the live-updating happening before there.

I basically need to change the way this tidbit works.

I am curious on your thoughts on this. I could do a couple things.

  1. I could provide my own entry point script entirely with OutOfProcessNodeInstance, which I'd like to avoid because updates would break it.
  2. Modify HttpNodeInstanceEntryPoint to accept a command line parameter that indicates a module name that should be used to invoke the moduleName parameter and exportedFunctionName. Basically, a small layer of indirection. When starting a node instance, we can then do node http-entry.js -requireModule hot-instance-require.js. This new hot-instance-require.js would look something like this.
// hot-instance-require.js
module.exports = function(moduleName, exportedFunctionName, callback) {
    // custom module resolving and executing here that will executed the 'callback' parameter correctly
}

I would of course do the work, but I wanted to discuss it with you before I do this. Would you accept a pull request providing this feature? If so, what approach would you like me to take?

NOTE: I understand the risks of reloading a previously require'd node module, but in my case, I am using a file generated from webpack. All the modules used in the script are bundled in the single javascript file.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions