如何实现类似require('module.js/folder')的NPM模块引入方式?
问题解决思路
你遇到的问题核心在于:Node.js引入文件夹时,默认只会加载该文件夹下的index.js(或者package.json里指定的入口文件),不会自动遍历导出所有子文件的内容。所以直接require("./moduleFolder")时,因为没有入口文件整合导出,自然拿不到module和more类。
两种解决方案:
方案一:添加入口文件(推荐)
在moduleFolder目录下新建index.js,把file.js和file2.js的导出整合在一起:
// moduleFolder/index.js const { module } = require('./file'); const { more } = require('./file2'); module.exports = { module, more };
这样不管是本地测试用require("./moduleFolder"),还是发布后用户用require("你的模块名/moduleFolder"),都能直接访问到mymodule.module和mymodule.more,和你看到的其他模块的用法一致。
方案二:直接引入具体文件
如果不想加入口文件,那不管本地调试还是发布后,都得指定具体的文件路径:
// 本地测试写法 const { module } = require("./moduleFolder/file"); const { more } = require("./moduleFolder/file2"); // 发布后用户的写法 const { module } = require("你的模块名/moduleFolder/file"); const { more } = require("你的模块名/moduleFolder/file2");
那些支持require("module.js/folder")的模块,本质都是在对应文件夹下配置了入口文件,把内部文件的导出统一对外暴露了而已。
内容的提问来源于stack exchange,提问作者Normi
相关产品推荐
相关产品推荐

