Node.js模块查找node-modules而非node_modules的报错原因排查
我来帮你梳理下这个报错的可能原因和对应的解决办法,都是日常开发里常见的坑:
npm install没在正确的目录执行
你得确保是在项目根目录(也就是放package.json的那个文件夹)里跑的npm install pubg-api。要是你在代码文件所在的子文件夹里执行安装,node_modules就会生成在子文件夹里,而代码里require的时候会往上找,自然找不到正确的路径。解决办法:回到项目根目录,重新执行npm install pubg-api,确认根目录下出现了node_modules文件夹。npm install过程中悄悄失败了
有时候网络波动、权限不够会导致安装没完成,但控制台没弹出明显的错误提示。你可以先删掉根目录下的node_modules文件夹和package-lock.json文件,然后重新执行npm install,这时候注意看控制台有没有报错信息。如果是权限问题,Linux/macOS下可以加sudo,Windows就用管理员权限打开命令行再操作。模块名称或包本身有问题
先去你的package.json里的dependencies看看,有没有pubg-api这个包,确认安装的包名和你require的完全一致。另外,有些小众包可能已经废弃或者维护不到位,导致安装后无法正常加载。要是确认包名没错,你可以试试清除npm缓存:npm cache clean --force,然后重新安装一遍。代码文件的路径影响了模块查找
如果你的代码文件不在项目根目录(比如放在src子文件夹里),Node.js默认会先找当前文件夹的node_modules,找不到再往上一级找。但要是根目录根本没node_modules,那肯定会报错。所以一定要保证项目根目录下有正确生成的node_modules。
你可以先在项目根目录新建一个简单的测试文件test.js,就写你那两行代码:
const Pubgapi = require('pubg-api'); const apiInstance = new Pubgapi('api-key');
然后运行node test.js,如果这时候不报错,那就是你原来的代码文件所在路径的问题,调整下执行命令的目录或者文件结构就行。
内容的提问来源于stack exchange,提问作者user9069254

