Javascript Chrome版本61扩展中的ES6模块

Javascript Chrome版本61扩展中的ES6模块,javascript,google-chrome-extension,es6-modules,Javascript,Google Chrome Extension,Es6 Modules,这不是一个既过时又已经得到回答的问题 谷歌发布了一份新闻稿,声称Chrome支持ES6模块。我正在尝试从扩展中加载模块。我可以从普通页面中加载模块,但不能从扩展中加载 这是html,这是扩展上下文中的页面: <script src="test.js" type="module"></script> 打开页面时,我在控制台中看到以下错误消息: 加载模块脚本失败:服务器响应的非JavaScript MIME类型为“”。根据HTML规范,对模块脚本执行严格的MIME类型检

这不是一个既过时又已经得到回答的问题

谷歌发布了一份新闻稿,声称Chrome支持ES6模块。我正在尝试从扩展中加载模块。我可以从普通页面中加载模块,但不能从扩展中加载

这是html,这是扩展上下文中的页面:

<script src="test.js" type="module"></script>

打开页面时,我在控制台中看到以下错误消息:

加载模块脚本失败:服务器响应的非JavaScript MIME类型为“”。根据HTML规范,对模块脚本执行严格的MIME类型检查


有人有什么建议吗?这是一个应该向Chrome报告的bug吗?还是说它还不被支持?我找不到任何直接的解释。

如评论中提到的用户wOxxOm,请参阅

9-18-17更新:看起来它正在被修复

10-19-17更新:报告使用Chrome64(目前为canary)


11-13-17更新:最终更新,在Chrome63中测试,模块正在工作。请注意,如果需要在扩展的后台页面加载模块,则不能通过manifest.json中的scripts属性来加载模块,而是将page设置为background.html,并在script标记中指定type module,这将绕过清单问题。

加载本地文件时可能会出现错误。 我设法为此创建了一个解决方案,但您仍然会在控制台中遇到错误,并且由于源代码问题,您无法在中使用其他导入语句。我猜:

window.addEventListener('load',function(){
功能模块(代码){
让url=url.createObjectURL(新Blob([code],{type:'text/javascript'}));//从代码创建url
让script=document.createElement('script');
script.type='module';
script.src=url;
document.head.appendChild(脚本);
}
让scripts=document.querySelectorAll('script');
console.log(脚本);
for(让脚本中的脚本){
script.parentElement.removeChild(脚本);
如果(script.getAttribute('type')!='module')继续;//找到正常脚本
if(script.getAttribute('src')!==null){
//加载文件
var request=new XMLHttpRequest();
request.open('GET',script.getAttribute('src')+'?='+Date.now(),true);
request.onload=函数(){
如果(this.status>=200&&this.status<400){
//文件加载
追加模块(this.response);
}否则{
//加载文件时出错
console.error('无法加载模块:',script.getAttribute('src');
}
};
request.onerror=函数(){
//加载文件时出错
console.error('无法加载模块:',script.getAttribute('src');
};
request.send();
}
}
});

它在Mac电脑上。该文件是从扩展名中本地加载的。URL类似于chrome://extensionid/test/test.htmlI 我想这最终会成为chrome扩展的一个问题,他们可能需要关闭本地资源上的mime类型检查,并假设脚本资源的默认mime类型具有有效的js类型。现在说我会这么想还为时过早。还不支持,请看@wOxxOm,谢谢!如果您指定您的评论作为答案,我将接受它。不幸的是,另一个错误报告那里。。。无论如何,这很有趣,但让我想到es6模块将需要至少一年的时间来进行chrome扩展:/