在Nest.js中使用file-type v19.4.1时遇ERR_PACKAGE_PATH_NOT_EXPORTED错误
解决Nest.js中使用file-type v19.4.1时的ERR_PACKAGE_PATH_NOT_EXPORTED错误
问题根源:file-type从v19版本开始改为纯ESM模块,不再支持CommonJS的require()导入,而Nest.js默认项目配置为CommonJS(未设置"type": "module"),直接使用常规导入会触发导出路径错误。
以下是几种可行的解决办法:
方法一:切换项目为ESM模式
- 在项目根目录的
package.json中添加"type": "module":{ "type": "module", // 其他原有配置... } - 修改控制器中的导入代码为ESM格式:
import { fileTypeFromFile } from 'file-type'; - 注意:项目中所有CommonJS语法(如
require()、module.exports)需要同步改为ESM语法(import/export)。
方法二:使用动态导入(无需全局修改项目类型)
如果不想切换整个项目的模块系统,可以在需要调用file-type的地方使用动态导入:
async function getFileType(filePath) { const { fileTypeFromFile } = await import('file-type'); return fileTypeFromFile(filePath); }
在控制器的异步方法中调用这个函数即可。
方法三:降级到兼容CommonJS的版本
如果上述方案都不适用,可以降级到file-type v18(最后一个支持CommonJS的版本):
npm uninstall file-type npm install file-type@18
之后即可使用原有的CommonJS或ESM导入方式:
// CommonJS const { fileTypeFromFile } = require('file-type'); // 或 ESM import { fileTypeFromFile } from 'file-type';
内容的提问来源于stack exchange,提问作者Roberto C.
相关产品推荐
相关产品推荐

