目前我正在从事一个个人项目,并且在理解我的应用程序中 module.exports 的功能时遇到了问题......
我的应用程序结构如下所示:
app
├── common
│ ├── cmd
│ │ ├── run-cmd.js
├── routes
│ ├── system
│ │ ├── temp.js
我希望能够实现一种将可重用函数存储在我的应用程序的单独位置(在本例中run-cmd.js
)的方法,并在我的应用程序的其余部分()中轻松访问它们,temp.js
而无需专门引用文件路径(例如:require(../../folder/folder/file)
这里是run-cmd.js
:
const { spawn } = require("child_process");
module.exports.runCmd = (cmd, callback) => {
var command = spawn(cmd, [], {shell:true});
const REGEX_LINE_BREAK = /(\r\n|\n|\r)/gm;
var result = '';
command.stdout.on('data', function(data) {
console.log(data.toString())
result += data.toString().replace(REGEX_LINE_BREAK, "");
});
command.on('close', (code) => {
console.log("code: " + code)
return callback(result);
});
}
这里是temp.js
:
var express = require('express'),
router = express.Router(),
runCmd = require('../../common/cmd/run-cmd');
// Add a binding to handle '/temp'
router
.get('/temp', (req, res) => {
runCmd('vcgencmd measure_temp', function(result) {
console.log("Result we are prepping to send: " + result);
res.json({result: result});
});
});
module.exports = router;
我觉得require()
上面的例子违背了使用 module.exports 的灵活性的目的......在我的应用程序的其他位置做类似require(./run-cmd)
甚至require(from-root/path/run-cmd)
会更好地引用的事情。此外,在这个当前示例中,我收到一条错误消息TypeError: runCmd is not a function
.
任何人都可以帮助消除我对使用的一些困惑module.exports
并告诉我哪里出错了吗?