Karma 已弃用,但自 v17.1 起仍然是 Angular CLI 配置的默认测试框架。我想在浏览器中测试需要 https 上下文的微妙加密功能,因此需要让 Karma 作为 https 服务器运行。
Karma 的配置文档描述了此设置:
httpsServerOptions: {
key: fs.readFileSync('server.key', 'utf8'),
cert: fs.readFileSync('server.crt', 'utf8')
},
我已准备好与“ngserve”一起使用的本地密钥和证书文件,但在加载 Karma 并直接导入 karma.config.js 中的函数时,默认情况下“fs”不可用,如下所示:
import {readFileSync} from "fs"
因此错误而失败:
语法错误:无法在模块外部使用 import 语句
刚接触 Angular 和 NodeJS,还没有找到任何有用的搜索结果。
Karma 文档很旧,并且对模块支持不清楚。我发布到 Karma 配置文档的链接说:
Karma 配置文件可以用 JavaScript、CoffeeScript 或 TypeScript 编写,并作为常规 Node.js 模块加载。
这让我认为 Karma 配置文件应该已经是模块的一部分。但 Karma 使用较旧的 ES 模块,因此当我更改 package.json 以包含
type: module
时,Karma 的其他部分将无法加载。解决方案很简单,只需使用 require
加载 'fs' 并且不要使用 type: module
:
const fs = require('fs')