为了给我的一个flask/jinja页面添加图像裁剪支持,我遵循了GitHub上的cropper.js使用示例,将CSS链接添加到我的HTML页面的中,并将以下内容添加到我的页面的
中:
<script src="/static/assets/js/plugins/cropper.min.js" type="module"></script>
<script>
import Cropper from "cropperjs";
const image = document.getElementById('crop_image');
const cropper = new Cropper(image, {
aspectRatio: 1 / 1,
crop(event) {
console.log(event.detail.x);
console.log(event.detail.y);
console.log(event.detail.width);
console.log(event.detail.height);
console.log(event.detail.rotate);
console.log(event.detail.scaleX);
console.log(event.detail.scaleY);
},
});
</script>
可以找到cropper.min.js
文件,正如我在Firefox 77.0.1浏览器控制台中看到的。
但是,我确实在控制台中得到以下错误消息:
SyntaxError: import declarations may only appear at top level of a module
在JS的第一行:
import Cropper from "cropperjs";
我在这个SO线程中发现,这个错误可能是因为Firefox中缺少type=“module”
,但正如您所看到的,我的代码中确实有这个错误。还有别的想法吗?这里有什么不对的?
我也有同样的问题。这就解决了。
在您选择的静态文件夹中安装整个包(及其所有依赖项)是很重要的。这将完整地安装整个软件包:
npm install cropperjs
从这个包的dist文件夹调用模块将确保调用它的所有依赖项。所以,我脑袋里有以下几个:
<link rel="stylesheet" href="{% static 'styles/cropperjs/dist/cropper.css' %}">
和脚本部分中的内容:
<script type="text/javascript" src="{% static 'styles/cropperjs/dist/cropper.js' %}"></script>
而且,正如@Matthias所建议的,您不需要import语句,不管它是内联脚本还是不同的JS文件。
在外部脚本上有type=module
,但在由于存在导入而失败的脚本上没有type=module
。
所以
<script type="module">
import Cropper from "cropperjs";
我应该做到这一点