如何从包中导出多个模块?

时间:2016-06-15 08:25:38

标签: node.js module npm package

我对节点很新,很可能这是一个非常简单的问题。

假设我有一个包mypackage。在我的软件包的package.json中,我定义了main密钥:

...
"main": "./dist/index.js",
...

dist文件夹中,还有另一个名为tools.js

的模块

安装mypackage后,我可以在该文件夹上运行节点,并执行以下操作:

> require('mypackage')

完美无缺。但是,当我尝试导入tools模块时,我遇到了这个:

> require('mypackage/tools')

Error: Cannot find module 'mypackage/tools'
    at Function.Module._resolveFilename (module.js:438:15)
    at Function.Module._load (module.js:386:25)
    at Module.require (module.js:466:17)
    at require (internal/module.js:20:19)
    at repl:1:1
    at REPLServer.defaultEval (repl.js:272:27)
    at bound (domain.js:280:14)
    at REPLServer.runBound [as eval] (domain.js:293:12)
    at REPLServer.<anonymous> (repl.js:441:10)
    at emitOne (events.js:101:20)

但是,如果我指定dist文件夹,则可以使用它:

> require('mypackage/dist/tools')

但这不是我希望用户做的事情。如果我同时拥有srcdist并且希望使用mypackage/otherMod可以访问非主要模块,那么我应该遵循什么项目结构?感谢。

1 个答案:

答案 0 :(得分:0)

因为您仍然在父目录中。

内部&#34; dist / index.js&#34;你可以做到

process.chdir(__dirname);

更新: 你可以使用包括这个。在index.js里面做:

require('./tools.js');