关于React项目中使用存在文件缺失问题的faceapi.js包是否适合生产环境的咨询
React项目中使用存在文件缺失问题的faceapi.js包是否适合生产环境的咨询
Hey there! 作为刚接触React的开发者,遇到这类第三方包的警告确实容易心里打鼓,我来帮你拆解清楚:
首先,先明确:你看到的这些都是Source Map解析警告,不是代码运行错误!
警告的原因
这些警告来自webpack的source-map-loader,它试图解析face-api.js编译产物里的source map文件,但face-api.js的npm包发布时并没有包含对应的TypeScript源码(.ts文件),导致loader找不到source map指向的源码路径,所以抛出了“文件不存在”的警告。你遇到的具体警告信息如下:
WARNING in ./node_modules/face-api.js/build/es6/xception/TinyXception.js Module Warning (from ./node_modules/source-map-loader/dist/cjs.js): Failed to parse source map from 'D:\\D\\Git\\Temp\\face-api\\node_modules\\face-api.js\\src\\xception\\TinyXception.ts' file: Error: ENOENT: no such file or directory, open 'D:\\D\\Git\\Temp\\face-api\\node_modules\\face-api.js\\src\\xception\\TinyXception.ts' WARNING in ./node_modules/face-api.js/build/es6/xception/extractParams.js Module Warning (from ./node_modules/source-map-loader/dist/cjs.js): Failed to parse source map from 'D:\\D\\Git\\Temp\\face-api\\node_modules\\face-api.js\\src\\xception\\extractParams.ts' file: Error: ENOENT: no such file or directory, open 'D:\\D\\Git\\Temp\\face-api\\node_modules\\face-api.js\\src\\xception\\extractParams.ts' WARNING in ./node_modules/face-api.js/build/es6/xception/extractParamsFromWeigthMap.js Module Warning (from ./node_modules/source-map-loader/dist/cjs.js): Failed to parse source map from 'D:\\D\\Git\\Temp\\face-api\\node_modules\\face-api.js\\src\\xception\\extractParamsFromWeigthMap.ts' file: Error: ENOENT: no such file or directory, open 'D:\\D\\Git\\Temp\\face-api\\node_modules\\face-api.js\\src\\xception\\extractParamsFromWeigthMap.ts'
能不能用于生产环境?
完全可以!
你已经测试过构建后的项目能正常运行,这就说明face-api.js的核心功能(人脸检测、识别等)没有问题。这些警告只和开发阶段的源码调试有关——也就是说,如果你需要在开发时断点调试face-api.js的内部逻辑,会因为缺少.ts源码而不方便,但生产环境下我们运行的是经过编译、压缩的优化代码,根本不需要依赖这些不存在的源码文件,所以这些警告不会影响生产环境的功能稳定性。
可选:消除警告的方案
如果实在不想看到这些警告,可以试试以下方法:
- 如果你用的是Create React App:升级到最新版本,新版本的CRA已经优化了这类第三方包的source map处理;或者使用
craco工具修改webpack配置,让source-map-loader忽略node_modules/face-api.js目录 - 手动配置webpack:在webpack配置文件的
module.rules中,找到处理source map的规则,添加exclude: /node_modules\/face-api.js/,跳过对该包的source map解析 - 最简单的方案:直接忽略这些警告——毕竟它们完全不影响代码运行,很多开发者都会选择这种方式
总结下来,只要你的业务功能测试正常,就放心把它用到生产环境吧~
备注:内容来源于stack exchange,提问作者Dhruvil Mehta
相关产品推荐
相关产品推荐

