简体   繁体   中英

What is the syntax to export a function from a module in Node.js?

What is the syntax to export a function from a module in Node.js?

function foo() {}
function bar() {}

export foo; // I don't think this is valid?
export default bar;

In Node you export things with module.exports special object. For example:

This exports both functions:

module.exports = { foo, bar };

They can be used as:

const { foo, bar } = require('./module/path');

To export one of those functions as top-level object you can use:

module.exports = foo;
module.exports.bar = bar;

which can be used as:

const foo = require('./module/path');

and:

const { bar } = require('./module/path');

or:

const foo = require('./module/path');
const { bar } = foo;

or:

const foo = require('./module/path');
const bar = foo.bar;

etc.

This is "the syntax to export a function from a module in Node.js" as asked in the question - ie the syntax that is natively supported by Node. Node doesn't support import / export syntax (see this to know why). As slezica pointed put in the comments below you can use a transpiler like Babel to convert the import / export keywords to syntax understood by Node.

See those answers for more info:

to expose both foo and bar functions:

module.exports = {
   foo: function() {},
   bar: function() {}
}

You can also do this in a shorter form

// people.js
function Foo() {
  // ...
}

function Bar() {
  // ...
}

module.exports = { Foo, Bar}

Importing:

// index.js
const { Foo, Bar } = require('./people.js');
export function foo(){...};

Or, if the function has been declared earlier:

export {foo};

Reference: MDN export

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM