首页 > 解决方案 > 不能使用“require”来加载模块

问题描述

我无法成功使用“require”来加载模块。我的书没有提供足够的上下文。

它声称这是我在模块文件中所需要的(文件名为“newjavascript.js”:

var days = ["monday", "tuesday", "wednesday", "thursday"];

exports.name = function(number) {

return days[number];

};

exports.number = function(name) {

return days.indexOf(name);

};

这是我在 netbeans 中作为单独文件的 require 函数:

function require(InterFaceFile) {

var code = new Function("exports", readFile(InterFaceFile));

var exports = {};

code(exports);

return exports;

}

console.log(weekDay.name(1));

output: "weekDay.name is not a function"

这是它在本书前面描述的相同模块,它提到这更多的是用于浏览器端:

(function(exports) {

 var days = ["monday", "tuesday", "wednesday", "thursday"];

 exports.name = function(number) {

 return days[number];

 };

 exports.day = function(name) {

 return days.indexOf(name);

 };

})(this.weekday = {});

console.log(weekday.name(1));

我知道“weekDay”在第一个文件中没有,所以我尝试在其位置使用文件名(新javascript.js,带和不带引号),还尝试将整个第一块代码包装在一个名为“weekDay”的函数中“,我在浏览器和netbeans上试过,但没有运气。我觉得如果我能把这件事弄清楚,从这里开始就会一帆风顺!谢谢!

标签: javascriptnetbeans

解决方案


感觉您的问题(或您的代码)缺少一些行,我想这会起作用:

// code for require here
const weekDay = require("/path/to/weekday.js"):
console.log(weekDay.name(1)):

这似乎是一个理解 NodeJS 风格 require 工作原理的练习。或者,如果您使用的是其他方法(模块模式):

const weekDay = (function(exports) {
 var days = ["monday", "tuesday", "wednesday", "thursday"];
 exports.name = function(number) {
 return days[number];
 };

 exports.day = function(name) {
 return days.indexOf(name);
 };

})({});

console.log(weekDay.name(1));

缺少的步骤实际上是“要求”模块并将结果绑定到可用于调用函数的变量!


推荐阅读