如何使用 CommonJS 方式正确导入

How to properly import using the CommonJS way

我对如何在名为 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()
}
});

我正在使用 postman 检查节点模块,但是当我 运行 它时,我得到

TypeError: Cannot read property 'length' of undefined

我知道反向代码有效,因为我之前测试过它,所以我假设我的导入不正确。但是任何帮助解决这个问题都会很棒。

reverseString 函数需要一个字符串类型的参数(也可以是数组),并且您正在迭代该参数。

但是在调用此函数时您没有传递任何参数,因此 str 参数设置为未定义。

undefined 没有任何长度 属性 所以它抛出了这个错误

(我的回答是针对ES5的。ES6中还有一些简写,比如default exports和named exports)

您可以使用单个导出:

module.exports = reverseString;

然后:

var reverseString = require('./util');

reverseString("bobba");

//shorthand:
require('./util')("bobba");

或return一个命名导出的对象:

module.exports = { reverseString: reverseString };

然后:

var utils = require('./util');
utils.reverseString("bobba");

// shorthand:
require('./util').reverseString("bobba");

您需要引用该函数所在的库,因为您导入了一个变量。

var util = require('./util');

// util.reverseString(); // this does nothing

var req = { body: 'some string' };
var reversed = util.reverseString(req.body); // ref util here