javascript - 不能使用“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上试过,但没有运气。我觉得如果我能把这件事弄清楚,从这里开始就会一帆风顺!谢谢!
解决方案
感觉您的问题(或您的代码)缺少一些行,我想这会起作用:
// 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));
缺少的步骤实际上是“要求”模块并将结果绑定到可用于调用函数的变量!
推荐阅读
- javascript - xslt 节点替换然后用 javascript 摄取
- reactjs - 从 React JS 中的另一个函数访问对象
- javascript - Redux 问题错误:重新渲染过多。React 限制渲染次数以防止无限循环
- java - 双向链表不打印
- ubuntu - 重新启动时 iSCSI 出错。错误的默认值
- python - 带有 shell=True 的 subprocess.run 似乎实际上并未在 shell 中运行
- firebase - 基于子值和令牌值的安全规则
- laravel - 带有 Vue 标头错误的 Laravel sanctum API 令牌
- c - 计数未在嵌套 for 循环中更新
- swift - 如何将文件名传递给属于数据模型的类