内容获取错误的uglifyjs命令



我正在尝试在运行msbuild时使用uglifyjs来缩小和创建源映射。我得到了一个错误,所以我已经将MSBuild从循环中删除,并从命令行运行它,但如果我包含内容,仍然会得到一个错误:

这是从命令行开始的,创建适当的最小文件:

node_modules.binuglifyjs.cmd wwwrootlibjquery.validate.unobtrusive.js 
--source-map "url='jquery.validate.unobtrusive.min.js.map',includeSources" 
-o wwwrootlibjquery.validate.unobtrusive.min.js -c -m

但是这个(基本上是我从另一个项目中得到的例子(抛出了一个错误

node_modules.binuglifyjs.cmd wwwrootlibjquery.validate.unobtrusive.js 
--source-map "url='jquery.validate.unobtrusive.min.js.map',content='wwwroot/lib/jquery.validate.unobtrusive.js.map',includeSources" 
-o wwwrootlibjquery.validate.unobtrusive.min.js -c -m
ERROR: invalid input source map: wwwroot/lib/jquery.validate.unobtrusive.js.map
at parse_source_map (eval at <anonymous> (C:Usersxxxsourcetempnode_modulesuglify-jstoolsnode.js:18:1), <anonymous>:22118:15)
at Object.minify (eval at <anonymous> (C:Usersxxxsourcetempnode_modulesuglify-jstoolsnode.js:18:1), <anonymous>:22234:38)
at run (C:Usersxxxsourcetempnode_modulesuglify-jsbinuglifyjs:379:27)
at Object.<anonymous> (C:Usersxxxsourcetempnode_modulesuglify-jsbinuglifyjs:287:5)
at Module._compile (node:internal/modules/cjs/loader:1101:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:17:47

什么是

错误与声明完全一样。。。

无效的输入源映射

--source-map有各种选项,在抛出错误的示例中,您有

content='wwwroot/lib/jquery.validate.unobtrusive.js.map'

这被称为合成源图

当您压缩由编译器(如CoffeeScript,映射到JS代码不会有太大帮助。相反您希望映射回原始代码(即CoffeeScript(。UglifyJS有一个获取输入源映射的选项。假设你有CoffeeScript中的映射→编译JS后,UglifyJS可以生成地图来自CoffeeScript→通过映射将JS编译到其原始位置。

要使用此功能,请通过源映射"content="/path/to/input/source.map";或-源映射";content=内联";如果源映射包含在源的内联中。

请参阅https://github.com/mishoo/UglifyJS#composed-源地图

然而,文件wwwroot/lib/jquery.validate.unobtrusive.js.map的格式不是很好。您可以看到错误在parse_source_map上抛出

如果你看一下这个方法,你会发现它所做的只是试图将内容解析为JavaScript值。例如

function parse_source_map(content) {
try {
return JSON.parse(content); // <- this is what is failing
} catch (ex) {
// ... and this is the error you are seeing
throw new Error("invalid input source map: " + content);
}
}

要修复此问题,请确保JSON.parse可以接受文件wwwroot/lib/jquery.validate.unobtrusive.js.map,或者删除content选项,因为它在您的情况下似乎是多余的。

最新更新