解决Node模块加载失败的3种方法:路径设置与语法详解
日期:2025-05-19 15:54:07 •原创
你是不是经常在终端看到这种红色报错???Cannot find module 'xxx'?? 就像打游戏卡在加载界面,代码死活跑不起来?别慌!今天教你三招必杀技,保准让你告别模块加载失败!
一、路径规则要记牢(这个坑我掉过8次)
??核心原则:?? Node.js找模块就跟快递员送货似的——地址写错就送不到!
??场景1:自家兄弟模块(自定义模块)??
javascript复制// 错误写法 ? import utils from 'utils' // 正确姿势 ? import utils from './utils.js'
??划重点:?? 当前目录必须带??./??,就像跟邻居借酱油得说"隔壁老王家"!
??场景2:父级目录模块??
javascript复制// 爷爷辈的模块要这么找 import config from '../../config.js'
??防坑指南:??
- 每多一层目录就多加一个../
- 用??path.resolve??更保险:
javascript复制import { resolve } from 'path' const configPath = resolve(__dirname, '../../config.js')
二、文件后缀的潜规则(新手100%中招)
你以为.js文件可以随便写后缀?Too young!
文件类型 | require写法 | import写法 |
---|---|---|
.js | 默认支持 | 需要??type:module?? |
.mjs | 不支持 | 强制ES模块 |
.cjs | 强制CommonJS | 不支持 |
??血泪案例:??
bash复制Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/xxx'
??急救三件套:??
- 检查文件名是不是手滑写成.util.js(多个点)
- 用import时??必须写完整后缀??
- 试试这个万能命令:
bash复制node --experimental-specifier-resolution=node index.js
三、环境变量的魔法(资深玩家必备)
知道为啥别人代码能跑你的报错吗?可能是??NODE_PATH??在捣鬼!
??设置方法(不同系统通用):??
bash复制# 临时设置 export NODE_PATH=./src # 永久生效(加到.bashrc或.zshrc) echo 'export NODE_PATH=./src' >> ~/.zshrc
??路径查找优先级(重点!)??
- ??核心模块??(fs、path这些亲儿子)
- ??node_modules目录??
- 上级目录的node_modules(像爬楼梯一样往上找)
- 环境变量设置的路径
??查案工具推荐:??
javascript复制console.log(module.paths) // 打印当前查找路径
个人私房调试技巧(一般人我不告诉)
最近发现个神器——??require.resolve()??!它能告诉你Node.js到底在哪找模块:
javascript复制console.log(require.resolve('lodash')) // 输出:/Users/xxx/node_modules/lodash/lodash.js
用这招瞬间看穿路径问题,比侦探还管用!
最后说句大实话:??别死磕一种导入方式!?? 我见过有人用import死活加载不了第三方库,换成require秒解决。记住啊——代码能跑起来才是王道,管它黑猫白猫呢!
本文由嘻道妙招独家原创,未经允许,严禁转载