首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用内容脚本中的多项导入,只会导致“不能在模块外使用导入语句”(浏览器扩展、清单v3、vite、.ts)。

使用内容脚本中的多项导入,只会导致“不能在模块外使用导入语句”(浏览器扩展、清单v3、vite、.ts)。
EN

Stack Overflow用户
提问于 2022-09-01 19:33:22
回答 1查看 80关注 0票数 0

我不知道这到底是怎么开始的,如果我错过了信息,我会提前道歉。如果你留下评论的话,很乐意提供。

我正在开发一个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

  • Code是用Vite编译/捆绑的,在这个项目之前我还没有使用过。我一点也不觉得.

  • crc导入在.svelte文件

中运行良好

认为这与编译/捆绑过程有关

EN

回答 1

Stack Overflow用户

发布于 2022-09-03 19:55:01

解决方案

背景service_worker可以声明为一个模块:

代码语言:javascript
运行
复制
"background": {
  "service_worker": "src/pages/background/index.js",
  "type": "module"
}

因此,很容易将消息从content_scripts传递到它。在我的例子中,我传递想要找到的校验和的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73574603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档