javascript - 从动态外部文件运行 Nodejs 函数

标签 javascript node.js function npm

我想知道是否有一种方法可以从可能会发生变化的外部文件运行 Node 函数。

Main.js

function read_external(){
    var external = require('./external.js');
    var result = external.result();
    console.log(result);
}

setInterval(function(){
    read_external();
},3000);

External.js(初始)

exports.result = function(){
    return "James"; // Case 1
}

我现在通过输入 node main.js 来运行代码

代码开始运行后,我将External.js更改为

exports.result = function(){
    return "Jack"; // Case 2
}

尽管发生了变化,它仍然打印 James 而不是 Jack。 有没有办法编写代码,以便在代码更改时执行新函数?

我需要这个,因为我正在构建一个服务,人们可以在其中提供自己的脚本作为 JS 文件,并且当他们调用服务中的某个函数时,它会被执行,具体取决于调用它的人。

最佳答案

您可以在每次调用之前从缓存中删除该模块。

var module = require.resolve('./external.js');

function read_external(){
    var external = require(module);
    var result = external.result();
    console.log(result);
}

setInterval(function(){
    delete require.cache[module]; //clear cache
    read_external();
},3000);

关于javascript - 从动态外部文件运行 Nodejs 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45353829/

相关文章:

javascript - 函数在内存中的大小

javascript - jQuery.ui.draggable.js 和 jQuery.ui.widget.js 冲突

javascript - 通过在它们周围徒手绘制来选择 SVG 元素

javascript - jQuery:如果所有 child 都有相同的类(class)

javascript - 从文本输入的文本框中删除点

node.js - 如何在 Express 的多个文件中包含路由处理程序?

javascript - ExpressJS 中的 POST 参数

javascript - Node 核心库的 Node 浏览器

python - 使用Python按下按键时在功能之间切换

Javascript原型(prototype),如何访问原型(prototype)函数