javascript 解析源Map失败

5hcedyr0  于 2023-01-19  发布在  Java
关注(0)|答案(4)|浏览(291)

我创建了一个npm库,然后在一个React项目中安装并使用它,当我启动这个项目时,它抛出了这行代码:

Failed to parse source map from 'C:\Users\XXXX\Desktop\example\node_modules\@AAA\BBB\src\components\Button\Button.tsx' file: 
Error: ENO ENT: no such file or directory, open 
'C:\Users\XXXX\Desktop\example\node_modules\@AAA\BBB\src\components\Button\Button.tsx'

这就像一个警告,更像一个错误,因为按钮工作,webpack告诉我“没有发现问题”。
在node_modules文件夹中,我有一个@AAA/BBB文件夹,其中包含/dist/cjs和/dist/esm。我不知道在节点模块的/src中搜索什么。
感谢您的宝贵时间〈3

uttx8gqw

uttx8gqw1#

可以通过将GENERATE_SOURCEMAP=false添加到.env文件中来删除该警告
实际上,是Webpack 5.x的CRA导致的。他们正在解决(https://github.com/facebook/create-react-app/pull/11752

rhfm7lfc

rhfm7lfc2#

如果只想在本地禁用sourcemap,可以在本地yarnnpm脚本中禁用它。

"scripts": {
    "start": "GENERATE_SOURCEMAP=false && react-scripts start",

现在,仅当您LOCALLY运行应用程序时,源Map才会被禁用。

mw3dktmi

mw3dktmi3#

如果你不想使用react-app-rewired,降级到react-scriptsv4或设置GENERATE_SOURCEMAP=false,你可以看看我的想法。它很丑,但它的工作。
创建如下脚本:

const { readFileSync, writeFileSync } = require("fs");

const path = "node_modules/source-map-loader/dist/utils.js";
const regex = /.*throw new Error\(`Failed to parse source map from '\${sourceURL}' file: \${error}`\);*/;

const text = readFileSync(path, "utf-8");
const newText = text.replace(regex, `buffer="";sourceURL="";`);
writeFileSync(path, newText, "utf-8");

然后将其添加到您的包中。json:

"scripts": {
    "start": "node suppress-source-map-warnings.js && react-scripts start"

使用GENERATE_SOURCEMAP=false会使您更难调试自己的代码,所以我认为这个脚本是一个较小的邪恶。
source-map-loader改变错误信息时,这段代码将停止工作。但我希望我们能在那时找到一个真实的的解决方案。就像某种标记在找不到源Map时抑制警告一样。

moiiocjp

moiiocjp4#

1.删除package-lock.json文件

  1. update npm =〉我已经尝试并成功了

相关问题