已经在 package.json 写了 main 字段,
但为什么还是得这样写才能正确引入
const axios = require('axios/dist/node/axios.cjs')
写了 main 字段 不是就能在 require 时自动找到模块入口吗?
回答:
如果在package.json文件中设置了main字段,那么通常情况下应该可以通过以下方式引入axios:
const axios = require('axios');
(1) 题主的情况应该是Node.js 版本可能不支持 ESM 模块。在这种情况下,尝试使用 CommonJS 格式来引入模块:
const axios = require('axios/dist/node/axios.cjs');
这种方式会直接引入 CommonJS 格式的模块,而不是 ESM 格式的模块。
(2) 另一种情况:项目依赖树中存在多个版本的axios,导致 Node.js 在解析模块时出现问题。可以使用
npm ls axios
命令查看依赖树中是否存在多个版本的 axios,如果存在,可以尝试使用
npm dedupe
命令将它们合并到同一个版本。
如果实在无法确定问题出现的原因,可以尝试重新安装 axios 模块,并清除缓存:
npm uninstall axios npm cache clean --force npm install axios
然后尝试再次引入模块,看看问题是否解决。
