Nodejs - 如何在单独的文件中分组和导出多个函数?

时间:2017-08-20 10:21:34

标签: javascript node.js express ecmascript-6 koa2

如何在nodejs中分组和导出多个函数?

我正在尝试将所有的util函数分组到utils.js中:

async function example1 () {
    return 'example 1'
}

async function example2 () {
    return 'example 2'
}

module.exports = { example1, example2 }

然后在home.js中导入:

  import { example1, example2 } from '../utils'

  router.get('/', async(ctx, next) => {
    console.log(example1()) // Promise { 'example 1' }

  })

我以为我会得到'example 1'上面的测试用例?

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

这将是我出口问题的解决方案!并且不要将es5 exportses6 imports混合,这可能会非常奇怪 - 有时候!

export const example1 = async () => {
   return 'example 1'
}

export const example2 = async () => {
   return 'example 2'
}


// other file
import { example1, example2 } from '../../example'
return example1()

然而,如果你必须混合它们,请告诉我!我们也可以为此找到解决方案!

有关导出模块的更多信息以及可能出现的问题!

MDN Exports以及关于the state of javascript modules

的简短故事

答案 1 :(得分:1)

下面,我分享了一种以 2种不同方式声明导出functions的方法。希望它有助于理解解决问题的不同方法。

"use strict";
// utils.js

const ex1 = function() {
  console.log('ex1');
};

function ex2(context) {
  console.log('ex2');
};

module.exports = { example1: ex1, example2: ex2 };

您可以在另一个(外部)JS文件(例如:app.js)中调用它们,如下所示:

// app.js
const utils = require('./utils');

utils.example1(); // logs 'ex1'
utils.example2(); // logs 'ex2'

答案 2 :(得分:1)

async function example1 () {
    return 'example 1'
}

async function example2 () {
    return 'example 2'
}

module.exports.example1 = example1;
module.exports.example2 = example2;

这样导入home.js:

const fun = require('./utils');
fun.example1();