我有一个看起来像这样的目录结构(两个文件夹都有可用的node_modules)
- task1
- src
- shorten.js
- task2
- src
- api.js
- server.js
在shorten.js
中,我有两个功能,即shorten(url)
和checkLink(url)
。在文件末尾,我有一个module.exports = shorten
。
在api.js
中,有一行const shorten = require("../../task1/src/shorten");
。如果我仅使用参数调用shorten
,就没有问题,但是当我尝试以类似方式调用checkLink
时,问题就来了。
我该怎么做才能能够在task2的api.js中调用checkLink
?
答案 0 :(得分:1)
您还需要在shortshort.js中导出checkLink函数,以便随后可以从api.js中要求它。
在short.js内部,更改模块。exports如下所示:
module.exports = { shorten, checkLink }
在api.js里面是这样的:
let myShortenFile = require ("../../task1/src/shorten")
myShortenFile.shorten() // to call shorten
myShortenFile.checkLink() // to call the checkLink
希望这会有所帮助。
//更新:
自从OP指出他不能导出两个功能,而只想导出一个功能并且仍然可以访问第二个功能...
// shorten.js
const shorten = function(url, isCheckLink){
if(isCheckLink){
// Perform check link code
return Result_of_check_link_function
}
else{
return Result_of_shorten_function
}
}
module.exports = shorten
// inside api.js
let myShortenFile = require ("../../task1/src/shorten")
myShortenFile.shorten('http://myurl.com') // to call shorten
myShortenFile.shorten('http://myurl.com', true) // pass true
// as second argument to call the CheckLink function
答案 1 :(得分:0)
当前您仅导出module.exports = shorten
的一个功能。
您需要导出checkLink(url)
并与shorten
相同,如下所示:
module.exports = checkLink
另一种结合两种出口的方式,如下所示:
module.exports = {
shorten,
checkLink
}
Here是一篇有关在nodejs中导出和导入模块的不错的文章。
答案 2 :(得分:0)
或者您也可以使用module.exports
module.exports = {
shorten: function(url) {
//some process here
return {
success: true,
data: url
}
},
checkLink: function (any,values,here) {
//some code
return { value };
}
}
在请求中使用如下
let someShorten= require("./place/to/file");
someShorten.shorten('http://myurl.com');