【问题标题】:How to execute IIFE script file in Node.js如何在 Node.js 中执行 IIFE 脚本文件
【发布时间】:2020-02-13 05:26:11
【问题描述】:

我有一个非常具体的场景。

我有一个名为 ApplicationExtension.js 的 javascript 文件,其中有一个 IIFE 结构:

const ApplicationExtension = (function() {
    ...
    ...
    return {
        functionName : functionToExpose
    }
})();

我有另一个文件 script.js 在里面,我想访问 ApplicationExtension 以便我可以执行 ApplicationExtension.functionName()

我将在节点环境中运行script.js,在浏览器环境中执行ApplicationExtension.js

我试过了,

const App = require('./js/extended/application_extension');
console.log(App)

正如预期的那样,它是一个{} 对象,因为ApplicationExtension 中没有export

注意事项

  1. ApplicationExtension.js 当前正在浏览器中执行,script.js 正在执行 Node.js。
  2. 我不能在ApplicationExtension.js 中使用export,因为它有很多依赖项,而且由于遗留原因,几乎不可能将所有内容更改为基于模块的项目。

【问题讨论】:

  • 使用module.exports有什么问题?
  • 你有什么问题?
  • 从 ApplicationExtension.js 中导出 ApplicationExtension,例如 exports.ApplicationExtension 而不是 const ApplicationExtension.js
  • @JaromandaX 我不能,因为module.exports 在需要执行ApplicationExtension.js 的浏览器中不起作用
  • @HubballiHuli 这样做意味着我将不得不改变 ApplicationExtension 在其他脚本文件中的使用方式。所有其他脚本文件将其用作ApplicationExtension.functionName(),在浏览器中全局可用

标签: javascript node.js iife


【解决方案1】:

你可以尝试用 FS 读取它并使用 new Function() 将其转换为函数。

【讨论】:

  • 这是一种可能的解决方案。我必须删除const ApplicationExtension 提供给new Function(),然后调用这些方法。如果没有其他工作,我会去的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-15
  • 2011-01-05
  • 2018-05-17
  • 1970-01-01
  • 2023-02-17
  • 1970-01-01
  • 2021-06-29
相关资源
最近更新 更多