我正在创建一个包含CLI的节点库,以便使用它。
完整(但不长)代码可在https://github.com/claydiffrient/reltoabs找到。
因为我正在积极开发这个,所以我在开发期间使用npm link
来处理。
给我带来麻烦的部分似乎在cli.js
文件中。当我通过var reltoabs = require('reltoabs')
节点包含模块时,会发出错误,指出reltoabs
模块不存在,但它位于node_modules中。知道我怎么能做这个工作吗?
答案 0 :(得分:2)
如果您尝试要求的模块不是本机模块,并且不以路径标识符开头,那么Node将首先查看当前模块的父目录并附加/node_modules
。然后,Node将查看该目录,如果该模块不存在,那么它将迭代文件系统树,直到到达根目录。
假设您正在从模块文件夹开发,您的要求会执行以下搜索:
/module/path/lib/node_modules/reltoabs
/path/lib/node_modules/reltoabs
/lib/node_modules/reltoabs
这并不能解释您所获得的错误,但为了避免像您这样的错误,请尽可能相对地引用文件:
var reltoabs = require('./reltoabs')