如何解决Node.js项目启动时的ENOENT文件不存在警告?
问题:本地搭建Node.js React应用时出现source map解析警告
我有一个在服务器上正常运行的Node.js Web应用,现在正尝试在开发服务器上搭建本地副本。已安装与生产环境相同的依赖(Node.js、NPM、react-mutation-mapper、mobx-react、react-bootstrap),但启动Node服务器时出现如下警告:
错误日志
Compiled with warnings. Failed to parse source map from '/Users/maruwu/Desktop/project/react-now/node_modules/svg2pdf.js/dist/svg2pdf.min.js.map' file: Error: ENOENT: no such file or directory, open '/Users/maruwu/Desktop/project/react-now/node_modules/svg2pdf.js/dist/svg2pdf.min.js.map' Search for the keywords to learn more about each warning. To ignore, add // eslint-disable-next-line to the line before. WARNING in ./node_modules/svg2pdf.js/dist/svg2pdf.min.js Module Warning (from ./node_modules/source-map-loader/dist/cjs.js): Failed to parse source map from '/Users/maruwu/Desktop/project/react-now/node_modules/svg2pdf.js/dist/svg2pdf.min.js.map' file: Error: ENOENT: no such file or directory, open '/Users/maruwu/Desktop/project/react-now/node_modules/svg2pdf.js/dist/svg2pdf.min.js.map' webpack compiled with 1 warning
package.json内容
{ "name": "react-now", "version": "0.1.0", "private": true, "dependencies": { "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", "bootstrap": "^5.2.2", "install": "^0.13.0", "mobx-react": "^7.5.3", "npm": "^8.19.2", "react": "^18.2.0", "react-bootstrap": "^2.5.0", "react-dom": "^18.2.0", "react-mutation-mapper": "^0.8.56", "react-scripts": "5.0.1", "web-vitals": "^2.1.4" }, "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }, "eslintConfig": { "extends": [ "react-app", "react-app/jest" ] }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] } }
问题成因
- 依赖包安装不完整:
svg2pdf.js是react-mutation-mapper的间接依赖,安装过程中可能因网络波动、缓存异常等原因,导致该包的svg2pdf.min.js.map文件未被正确下载到本地node_modules目录。 - source-map-loader的严格校验:React Scripts 5.x版本默认启用了
source-map-loader,它会扫描所有依赖包中的source map引用。当svg2pdf.min.js文件里声明了source map路径,但实际文件缺失时,就会触发这个警告。 - 依赖树版本差异:即使你安装了和生产环境相同的顶层依赖,间接依赖的版本可能存在细微差异。部分版本的
svg2pdf.js可能在打包时遗漏了source map文件,或者source map的路径声明存在错误。
内容的提问来源于stack exchange,提问作者deamru
相关产品推荐
相关产品推荐

