如何在 Deno 程序中使用 IIFE 脚本?

How can I use an IIFE script in a Deno program?

我们有一个 JS 库,目前必须以 ES3 为目标,因为生产产品使用带有旧 JS 引擎的工具,这是没有商量余地的。但是我需要能够在 Deno 中使用这个库,而且我不能将它转换为 ES 模块。该库目前正在使用函数闭包模块,ala Crockford,其中每个源都是一个构造函数,如下所示:

function ModuleName() { 
"use strict";
...
}

然后模块被 let mod=new ModuleName(); 使用。

有什么方法可以在 deno 中使用它们吗?我不在乎具体如何——我可以加载脚本并在必要时 eval 它,但最好只使用某种形式的导入。

我已经尝试加载脚本文件并使用 evalFunction,以各种形式,以及记录的 import 的每个变体。我已经搜索了 Deno 文档并尝试了所有我能想到的搜索。都无济于事。

如有任何建议,我们将不胜感激。

关键是用Function(return (+ ... +);)()包裹源文件,得到模块构造函数的引用,然后就可以构造了。我乐于接受更好的想法,但这对我的情况有效。

function createModule(pthORurl, ...args) {
    try {
        let mod = Function("return ("+Deno.readTextFileSync(pthORurl)+");")();
        if(typeof(mod)!=="function") { throw Error("Loaded module is type '"+typeof(mod)+"' not type 'function'"); }
        mod = new mod(...args);
        if(typeof(mod)!=="object") { throw Error("Loaded module is type '"+typeof(mod)+"' not type 'object'"); }
        return mod;
        }
    catch(err) { err.message += " (loading "+pthORurl+")"; throw err; }
    }