Closure compiler source map = empty (Chrome) 或错误的 (Firefox) 代码 window
Closure compiler source map = empty (Chrome) or wrong (Firefox) code window
我在'src'文件夹中有一组JavaScript文件,由Closure Compiler编译成一个文件cw-around.js 在 'src/comp' 中生成源地图 cw-around.js.map 也在 ' src/comp'.
"//#sourceMappingURL=xxx"在编译文件的末尾cw-around.js。
xxx 是一个完整的 HTTP link(本地网络服务器)到 cw-around.js.map 并在浏览器中成功测试。
{"version":3,"file":"cw-around.js"是cw-around.js.map文件的开头
在Dev mode/sources文件列表中,我可以看到Chrome和Firefox中的关联文件(当我输入错误的xxx时,我只能看到已编译的cw -around.js 文件).
在那里,当我双击一个关联文件时(cw-demodata.js,其中一个 JavaScript 文件名包含在已编译的文件中文件):
在Chrome58或61("JavaScript source maps enabled"+"source map detected"),空显示代码 window。
在 Firefox 54 ("show original sources" + "devtools.source-map.locations.enabled;true"), HTML 的代码显示我的调用网页。
怎么了?如何调查以确定问题所在?
我找到了解决问题的方法:编译js文件并在与js文件相同的目录中生成源映射。关联的 js 文件现在可以在 Chrome 和 Firefox 中正确显示。
之前,成功打开编译后的js文件和source map后,浏览器似乎无法找到并加载未编译的js文件。
如果能在控制台中显示错误消息以快速发现问题,那就太好了...
我刚刚遇到了同样的问题,它来自 sourceMapLocationMappings
未正确设置。在源映射中,有(在 "version"
和 "file"
旁边)一个 "sources": []
条目,告诉浏览器在哪里可以找到实际的源文件(不是源映射)。
因为我和你一样,从子文件夹编译资产,子文件夹路径在这个源数组中(即它是 "sources": ["src/comp/foo.js"]
而不是 "sources": ["foo.js"]
)。浏览器试图从我的网络服务器请求 src/comp/foo.js
,但它显然不在那里,因为 foo.js
直接在那里。
解决这个问题的方法是设置适当的 sourceMapLocationMappings
。使用闭包编译器 cli,您可以使用 --source_map_location_mapping "\"src/comp/foo.js^|foo.js\""
. Using the ant task, you add a sourceMapLocaionMapping="src/comp/foo.js|foo.js"
对任务调用执行此操作。
这会将 "sources"
调整为直接指向 ["foo.js"]
,然后由您的网络服务器提供服务,并且可以通过开发工具找到。
编辑:根据
在 --source_map_location_mapping
中添加双引号
我在'src'文件夹中有一组JavaScript文件,由Closure Compiler编译成一个文件cw-around.js 在 'src/comp' 中生成源地图 cw-around.js.map 也在 ' src/comp'.
"//#sourceMappingURL=xxx"在编译文件的末尾cw-around.js。 xxx 是一个完整的 HTTP link(本地网络服务器)到 cw-around.js.map 并在浏览器中成功测试。 {"version":3,"file":"cw-around.js"是cw-around.js.map文件的开头
在Dev mode/sources文件列表中,我可以看到Chrome和Firefox中的关联文件(当我输入错误的xxx时,我只能看到已编译的cw -around.js 文件).
在那里,当我双击一个关联文件时(cw-demodata.js,其中一个 JavaScript 文件名包含在已编译的文件中文件):
在Chrome58或61("JavaScript source maps enabled"+"source map detected"),空显示代码 window。
在 Firefox 54 ("show original sources" + "devtools.source-map.locations.enabled;true"), HTML 的代码显示我的调用网页。
怎么了?如何调查以确定问题所在?
我找到了解决问题的方法:编译js文件并在与js文件相同的目录中生成源映射。关联的 js 文件现在可以在 Chrome 和 Firefox 中正确显示。
之前,成功打开编译后的js文件和source map后,浏览器似乎无法找到并加载未编译的js文件。 如果能在控制台中显示错误消息以快速发现问题,那就太好了...
我刚刚遇到了同样的问题,它来自 sourceMapLocationMappings
未正确设置。在源映射中,有(在 "version"
和 "file"
旁边)一个 "sources": []
条目,告诉浏览器在哪里可以找到实际的源文件(不是源映射)。
因为我和你一样,从子文件夹编译资产,子文件夹路径在这个源数组中(即它是 "sources": ["src/comp/foo.js"]
而不是 "sources": ["foo.js"]
)。浏览器试图从我的网络服务器请求 src/comp/foo.js
,但它显然不在那里,因为 foo.js
直接在那里。
解决这个问题的方法是设置适当的 sourceMapLocationMappings
。使用闭包编译器 cli,您可以使用 --source_map_location_mapping "\"src/comp/foo.js^|foo.js\""
. Using the ant task, you add a sourceMapLocaionMapping="src/comp/foo.js|foo.js"
对任务调用执行此操作。
这会将 "sources"
调整为直接指向 ["foo.js"]
,然后由您的网络服务器提供服务,并且可以通过开发工具找到。
编辑:根据
在--source_map_location_mapping
中添加双引号