You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中无法require文件夹问题求助(含generic-rest-api使用背景)

解决Node.js中require文件夹失败的问题

嘿,我太懂你这种困惑了——明明require('./cfg/config.js')能正常跑,换成require('./cfg')就直接报错,对吧?这其实是Node.js模块加载的规则在“搞事情”,我给你拆解明白:

Node.js加载文件夹模块的底层逻辑

当你用require引用一个文件夹时,Node.js会按这个顺序找入口:

  • 先找文件夹里的index.js(如果是ES模块的话会找index.mjs/index.cjs,取决于你的项目配置)
  • 要是没找到index文件,就去读文件夹里的package.json,看里面main字段指定的是哪个文件
  • 这俩都没有的话,就会抛出你碰到的加载失败错误

你的cfg文件夹里只有config.js,完全不符合上面的任一条件,Node.js根本不知道该加载哪个文件,可不就报错嘛!

针对你情况的3种解决方案

挑个顺手的用就行:

  1. 把文件重命名为index.js
    直接把cfg/config.js改名为cfg/index.js,之后require('./cfg')就会自动加载这个文件,效果和你之前直接引用单个文件一模一样。

  2. 给文件夹加个package.json指定入口
    在cfg文件夹里新建一个package.json,内容就这么一行:

    { "main": "config.js" }
    

    这样Node.js就明确知道,加载这个文件夹时要找config.js了。

  3. 继续直接引用单个文件(如果不纠结文件夹写法的话)
    要是你只是临时用用,也可以接着写require('./cfg/config.js'),这个写法本身完全没问题,只是少了点“优雅感”而已。

补充下generic-rest-api示例的逻辑

你提到的generic-rest-api示例里能直接require文件夹,那说明这个包的文件夹里肯定有index.js,或者配置了package.json的main字段,所以才能直接用文件夹路径引用哒。

内容的提问来源于stack exchange,提问作者Martin Thompson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:11:59