来自另一个文件的Node.js访问功能

时间:2018-07-26 14:00:21

标签: node.js

我有一个看起来像这样的目录结构(两个文件夹都有可用的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

3 个答案:

答案 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');