收到错误Could not load file 'worker.js' for content script. It isn't UTF-8 encoded.
> file -I chrome/worker.js
chrome/worker.js: text/plain; charset=utf-8
> to-utf8-unix chrome/worker.js
chrome/worker.js
----------------
Detected charset:
UTF-8
Confidence of charset detection:
100
Result:
Conversion not needed.
----------------
我也试过来回转换Sublime Text的文件而没有任何运气。
清单:
"content_scripts": [{
"matches": ["http://foo.com/*"],
"js": ["worker.js"]
}],
相关文件:https://www.dropbox.com/s/kcv23ooh06wlxg3/worker.js?dl=1
这是一个已编译的javascript文件,使用cljsbuild从clojurescript中吐出:
{:id "chrome-worker"
:source-paths ["src/chrome/worker"],
:compiler {:output-to "chrome/worker.js",
:optimizations :simple,
:pretty-print false}}
]}
其他文件(选项页面,背景)以相同的方式编译,不会生成此错误。我试图摆脱像Emojis这样奇怪的角色,但这并没有解决问题。
答案 0 :(得分:3)
事实证明这是一个问题,在谷歌闭包编译器中,clojurescript用来生成javascript - https://github.com/google/closure-compiler/issues/1704
解决方法是将编译设置为“US-ASCII”
:closure-output-charset "US-ASCII"
感谢来自clojurians的pesterhazy,帮助解决这个问题!
答案 1 :(得分:0)
如果您使用的是Webpack,则可以通过将默认的缩小器 Uglify 替换为 Terser 来解决,而不会产生那些编码问题。
在您的 webpack.conf.js 中添加
const TerserPlugin = require('terser-webpack-plugin');
// add this into your config object
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
parallel: true,
terserOptions: {
ecma: 6,
output: {
ascii_only: true
},
},
}),
],
},
答案 2 :(得分:0)
在写字板中编辑工作源代码后抛出此错误。当我在写字板中保存文件时,编码丢失了。要修复它,请在记事本中打开相同的文件,另存为,然后在保存按钮旁边的编码下拉菜单中指定“UTF-8”。
答案 3 :(得分:0)
如果有人在 Parcel 上遇到这个问题,只需添加一个包含此内容的 .terserrc 文件即可。
{
"ecma": 6,
"output": {
"ascii_only": true
}
}
这是@marian-klühspies 回应的改编版https://stackoverflow.com/a/58528858/2920671