gpt4 book ai didi

javascript - 打包 JavaScript 函数

转载 作者:行者123 更新时间:2023-12-01 01:08:00 24 4
gpt4 key购买 nike

我正在努力创建 JavaScript 函数的共享包。此时,我尝试像这样使用它们:

/app/index.js

const myPackage = require('../myPackage');

myPackage.function1();
myPackage.myScope.function2();

上面成功加载了myPackage。但是,当我尝试运行 function1 时,我收到一条错误:“TypeError:myPackage.function1 不是函数”。我在“包”中的代码是这样组织的:

/myPackage
index.js
root
function1.js
myScope
function2.js

代码如下所示:

index.js

require('./root/function1.js');
require('./myScope/function2.js');

function1.js

exports.function1 = function() {
console.log("Doing stuff in function1");
}

function2.js

exports.function2 = function() {
console.log("Doing stuff for function2");
}

我可以理解 function2 不起作用,因为没有任何东西将它放入 myScope 中,我不知道该怎么做。但是,我不明白为什么 function1 没有运行。我做错了什么?

最佳答案

要详细说明 bergi 的答案,您需要在 index.js 文件中包含以下内容:

// file: index.js
exports.function1 = require('./root/function1.js').function1;
exports.myScope2 = {
function2: require('./myScope/function2.js').function2,
};

因为 require('./root/function1.js') == 导出 function1.js 中的对象。所以如果你您的 function1.js 中有多个函数,您必须像这样:

// file: index.js
exports.function1 = require('./root/function1.js').function1;
exports.function11 = require('./root/function1.js').function11;
exports.function111 = require('./root/function1.js').function111;
...

其快捷方式可以是:

// file: index.js
Object.assign(exports, require('./root/function1.js'));

另一方面:您可以将导出对象设置为您的函数:

// file: function1.js
module.exports = function() {
console.log("Doing stuff in function1");
}

然后您可以在 index.js 文件中包含以下内容:

// file: index.js
exports.function1 = require('./root/function1.js');
exports.myScope2 = {
function2: require('./myScope/function2.js'),
};

此处 require('./root/function1.js') == function1.js 中的 function1。希望能解释一下问题。

关于javascript - 打包 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55440201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com