我是节点的新手,我正在尝试编写代码,我不必跟踪导出我在该文件中编写的单个函数。
我有一个功能
general.js
import request from 'request-promise'
import env from 'dotenv'
const dotenv = env.config();
function getInfo(req, res)
{
var $mac = req.body.mac;
return new Promise((resolve, reject) => {
request({ uri: `${process.env.API_HOST}/${$mac}` })
.then((cpe) => resolve(JSON.parse(cpe).data))
.catch((error) => reject(error));
});
}
module.exports = {
getInfo
};
我如何调整它以便我的功能自动导出?
我试过
import request from 'request-promise'
import env from 'dotenv'
const dotenv = env.config();
module.exports = () => {
let general = {};
general.getInfo = ($mac) => {
return new Promise((resolve, reject) => {
request({ uri: `${process.env.API_HOST}/${$mac}` })
.then((count) => resolve(JSON.parse(count).data))
.catch((error) => reject(error));
});
}
return general;
}
我一直在
错误:Route.post()需要一个回调函数,但得到一个[object Undefined]
如何继续进行调试?
我现在对任何建议持开放态度。
任何提示/建议/帮助都将非常感谢!
答案 0 :(得分:1)
所以,你想在一个文件中写一些函数,它们都应该只是因为它们是函数而被导出?不可能我害怕。您必须明确导出。
答案 1 :(得分:1)
也许只是将你的函数直接放到exports对象中:
module.exports = {
getInfo(req, res) {
//...
},
// type here ...
};
或者你转到Typescript,然后你就可以:
export function getInfo(req, res) {
//...
}
答案 2 :(得分:1)
我通常这样做:
exports.getInfo = (req, res) => {
var $mac = req.body.mac;
return new Promise((resolve, reject) => {
request({ uri: `${process.env.API_HOST}/${$mac}` })
.then((cpe) => resolve(JSON.parse(cpe).data))
.catch((error) => reject(error));
});
}
答案 3 :(得分:1)
说实话,我还没有找到最佳做法的指南。我读过的帖子以及应该如何完成的内容非常明确this one.
如果我们以您的代码为例,我们可以像这样修改它:
module.exports = {
let general = {};
general.getInfo = ($mac) => {
return new Promise((resolve, reject) => {
request({ uri: `${process.env.API_HOST}/${$mac}` })
.then((count) => resolve(JSON.parse(count).data))
.catch((error) => reject(error));
});
} }
删除箭头功能可解决您的错误。
现在,只要您想要访问导出,只需键入要用于给定导出的变量名称即可。在您的情况下,我们可以将其称为信息:
var info = require('./yourJSfileName.js')
这要求您安装 require 包(无意图)。
然后您可以使用:info.theFunctionName();
来调用导出的函数。我希望有所帮助,如果你想要我,我可以更深入。