Node.jsとexports

Node.jsの解説書に、いきなり『exports.index = 〜』というような記述が出てきて困惑してしまった。

調べた所、モジュール内のオブジェクトを外部に公開するための仕組みらしい。

サンプルプログラムを書いて実験してみる。

■サンプルプログラム computers.js

var lang = [
    'Python',
    'JavaScript',
    'Java',
    'Ruby',
];

var pc = [
    {name: 'iMac', maker:'Apple'},
    {name: 'PC-8001', maker:'NEC'},
    {name: 'FM-7', maker:'Fujitsu'},
    {name: 'MZ-2500', maker:'SHARP'},
];

exports.lang = lang; //langを公開する

nodeの対話モードで実験してみる。

$ node
Welcome to Node.js v12.16.0.
Type ".help" for more information.
>  var comp = require('./computers.js');
undefined
> cpmp;
{ lang: [ 'Python', 'JavaScript', 'Java', 'Ruby' ] }
> comp.lang[1]
'JavaScript'
> comp.pc;
undefined ※アクセスできない

追記

exportsよりもmodule.exportsを使った方がいいらしい。

var lang = [
    'Python',
    'JavaScript',
    'Java',
    'Ruby',
];

module.exports.lang = lang;

参考サイト

【Node.js入門】exports / module.exportsによるモジュール機能の使い方まとめ!