我不知道这到底是怎么开始的,如果我错过了信息,我会提前道歉。如果你留下评论的话,很乐意提供。
我正在开发一个chrome浏览器扩展程序。错误只出现在内容脚本中。我稍微修改了这个类型记录文件:https://github.com/Arrow7000/dall-e-downloader/blob/master/src/content-script.ts。在我尝试添加import {crc32} from 'crc';
之前,它可以正常工作。导入它不会引起任何问题,使用它可以。对crc32('test').toString(16);
的简单测试给出了错误Uncaught SyntaxError: Cannot use import statement outside a module
。
当我检查错误发生的地方时,我看到编译文件的第一行:
import { c as crc32 } from "../../../assets/crc32.aa06d663.js";
如果我在编译后的文件中查找其他导入,我会发现它们是“实际”导入的(它们仍然不作为import语句)。例如,saveAs
是导入的,可以看作是FileSaver_min.exports.saveAs(my, expected, params, are, indeed, here);
如果我检查本地html页面(术语?)由分机“托管”的网页。例:chrome-extension://asfdqwerty/index.html
),它使用相同的crc导入,它工作得很好。当我查看编译后的javascript时,我看到了一个类似的行import { d as defineCrc, c as crc32 } from "../../../assets/crc32.aa06d663.js";
,所以我以前对于“实际上”导入的担忧似乎没有必要。
在许多类似的QAs中,据说可以确保设置type="module"
。但是,这是一个类型记录文件,没有<script>
标记。如果我检查package.json文件,就会看到"type": "module",
已经设置好了。而且它已经在另一个文件中工作了!
所以我不知道怎么回事。我只想导入这个函数。
一些项目差异/说明:
我使用的是这个样板,而不是一个简单的叉子:https://github.com/NekitCorp/chrome-extension-svelte-typescript-boilerplate
中运行良好
认为这与编译/捆绑过程有关
发布于 2022-09-03 19:55:01
解决方案
背景service_worker可以声明为一个模块:
"background": {
"service_worker": "src/pages/background/index.js",
"type": "module"
}
因此,很容易将消息从content_scripts传递到它。在我的例子中,我传递想要找到的校验和的数据。
https://stackoverflow.com/questions/73574603
复制相似问题