我对如何在一个名为 util.js 的文件中导入一个简单地反转字符串的函数感到困惑
function reverseString(str) {
var reversed = " ";
for (var i = str.length - 1; i >= 0; i--) {
reversed += str[i];
}
return reversed;
}
module.exports.reverseString = reverseString;
我想在另一个文件中访问它,这个名为 server.js
这是我到目前为止所做的。
var util = require('./util');
util.reverseString();
var reversed = reverseString(req.body);
res.send(reversed);
} else {
res.status(400).end()
}
});
我正在使用邮递员来检查节点模块,但是当我运行它时,我得到了
TypeError: Cannot read property 'length' of undefined
我知道反向代码有效,因为我之前测试过,所以我认为我的导入是错误的。但任何有助于解决这个问题的帮助都会很棒。
答案 0 :(得分:2)
reverseString
函数期望一个类型为string的参数(也可能是数组)和你在迭代参数的相同函数。
但是在调用此函数时,您没有传递任何参数,因此str
参数设置为undefined。
undefined
没有任何长度属性,因此会出现此错误
答案 1 :(得分:1)
(我的答案针对的是ES5。在ES6中还有一些简介,比如默认导出和命名导出)。
您可以使用单一导出:
module.exports = reverseString;
然后:
var reverseString = require('./util');
reverseString("bobba");
//shorthand:
require('./util')("bobba");
或者返回一个名为exports的对象:
module.exports = { reverseString: reverseString };
然后:
var utils = require('./util');
utils.reverseString("bobba");
// shorthand:
require('./util').reverseString("bobba");
答案 2 :(得分:1)
自导入变量后,您需要引用该函数所在的库。
var util = require('./util');
// util.reverseString(); // this does nothing
var req = { body: 'some string' };
var reversed = util.reverseString(req.body); // ref util here