我对节点很新,很可能这是一个非常简单的问题。
假设我有一个包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')
但这不是我希望用户做的事情。如果我同时拥有src
和dist
并且希望使用mypackage/otherMod
可以访问非主要模块,那么我应该遵循什么项目结构?感谢。
答案 0 :(得分:0)
因为您仍然在父目录中。
内部&#34; dist / index.js&#34;你可以做到
process.chdir(__dirname);
更新: 你可以使用包括这个。在index.js里面做:
require('./tools.js');