您要请求功能或报告错误吗?
漏洞
当前的行为是什么?
我通过 package.json 在 angular6 中包含了 "signature_pad": "^3.0.0-beta.3"
它在所有浏览器中运行良好,但在 IE11 上,由于错误而无法加载网站。
没有任何描述的“语法错误”出了什么问题。
我不知道 Angular 6 构建过程看起来如何,但您应该使用与编译自己的代码相同的 Babel 配置来编译它。
您还可以使用 webpack resolve.alias
功能(未测试),它应该允许您加载已经编译的版本:
module.exports = {
//...
resolve: {
alias: {
signature_pad: 'signature_pad/dist/signature_pad.js'
}
}
};
感谢你的快速回复。
我会试一试。 如果您的想法不起作用,我也会尝试使用 babel polyfill。 我以前从未使用过它。
尝试以这种方式导入:
更改自:
import SignaturePad from 'signature_pad';
到:
import * as SignaturePad from 'signature_pad/dist/signature_pad';
功能下载(数据URL,文件名){
if (navigator.userAgent.indexOf("Safari") > -1 && navigator.userAgent.indexOf("Chrome") === -1) {
window.open(dataURL);
}
### //在 app.js 上添加以下语句 - 它的工作原理是 IE 11 不支持其他两个
否则如果(window.navigator && window.navigator.msSaveOrOpenBlob){var blobwin = dataURLToBlob(dataURL);window.navigator.msSaveOrOpenBlob(blobwin, 文件名);}
别的 {
var blob = dataURLToBlob(dataURL);
var url = window.URL.createObjectURL(blob);
var a = document.createElement("a");
a.style = "display: none";
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
window.URL.revokeObjectURL(url);
}
}
@sdqwerty的解决方法对我有用。 但是,值得注意的是 webpack 有一个名为mainFields的字段,默认为['browser', 'module', 'main']
。 这些是按优先顺序排列的,并且 signature_pad 在package.json中不包含browser
,因此模块会被拾取。 这映射到.m.js
文件,该文件包括 ES6 语法,如 class —— IE11 不支持。
@szimek我建议您根据 npm 的建议更新 package.json 以包含浏览器字段:
https://docs.npmjs.com/files/package.json#browser
这应该可以解决这些 IE11 问题。
这对我有用:
module.exports = {
resolve: {
alias: {
'signature_pad': 'signature_pad/dist/signature_pad' // <- hier without '.js' at the end!
}
}
};
使用 Laravel-Mix:
mix.webpackConfig({
resolve: {
alias: {
'signature_pad': 'signature_pad/dist/signature_pad',
}
}
});
我不知道 Angular 6 构建过程看起来如何,但您应该使用与编译自己的代码相同的 Babel 配置来编译它。
您还可以使用 webpack
resolve.alias
功能(未测试),它应该允许您加载已经编译的版本:module.exports = { //... resolve: { alias: { signature_pad: 'signature_pad/dist/signature_pad.js' } } };
v3.0.0-beta.4 编译版不支持 IE11,因为class
关键字。
最有用的评论
尝试以这种方式导入:
更改自:
import SignaturePad from 'signature_pad';
到:
import * as SignaturePad from 'signature_pad/dist/signature_pad';