javascript - 使用 Karma 测试 lit-element webcomponent
问题描述
我正在尝试使用 lit-html 创建一个空白项目,例如模板。我还想添加一些测试功能,所以我一直在尝试让它与 Karma 一起工作。
我可以运行正常的测试,比如添加,没有任何错误,所以我认为 Karma 本身运行正常。但我无法运行任何涉及 webcomponent 的测试。我无法导入网络组件!
我正在导出 web 组件:
export default class MyComponent ...
然后在测试文件上我将其导入:
import MyComponent from 'pathToComponent/MyComponent'
当我运行测试时,我得到:
Error loading test file: /test/example.test.js
TypeError: Failed to fetch dynamically imported module: http://localhost:9876/base/test/example.test.js
我在 github repo 上有它:https ://github.com/boguz/rollup-lit-redux ,所以如果您需要查看我安装的其他软件包,您可以更好地查看。
非常感谢任何帮助。谢谢!
解决方案
错误消息是由于引用的模块/test/example.test.js
-错误消息有点欺骗性...
无法获取动态导入的模块
线索是你没有动态导入(那是你使用的时候const module = await import('path')
,如果它失败了,你会在那条线上得到一个异常)——你是静态导入的。该错误消息不是因为它找不到http://localhost:9876/base/test/example.test.js
,而是它在该文件中找不到嵌套引用。
猜测example.test.js
包含一个未import
提供的相对路径:
import * as testFramework from './testFramework';
export default class MyComponent...
这适用于 TypeScript 和 linting 工具,因为它可以解析./testFramework
为./testFramework.d.ts
,./node_modules/@types/testFramework.d.ts
或您正在使用的任何类型查找。
但是,在浏览器中,它不知道您实际上想要,./testFramework.js
或者./testFramework/index.js
,它直接请求./testFramework
,获得 404,然后为调用组件提供该错误。
简而言之:
- 如果您静态导入(即使用
import * from ...
) - 但是你得到
无法获取动态导入的模块:filename.js
- 该错误实际上是另一个静态
import
infilename.js
,而不是filename.js
自身。
网络选项卡将指出哪个依赖项是问题所在,因为它将是 404,修复方法是使用构建工具解决这些导入,或者将 .js 文件的完整相对路径放在源代码中。
推荐阅读
- javascript - 使用 HTML + JavaScript 获取路径参数
- python - scipy lognorm中的部分期望公式
- javascript - 在 jQuery 可靠下拉列表中显示最后一个值的最佳方法是什么?
- arrays - React.js:两次切片()和映射()?
- jquery - 将 Jquery 滑块转换为反应文件
- python - 从原始计算机更改时,如何使导入的图像/其他文件仍导入该其他计算机
- c++ - KDE Marble:removeGeoData(string kmlpath) 不能管理多层
- python - 从匹配的 id 复制值并附加到新列
- javascript - 条件:输入:用同一个类检查
- mysql-workbench - MySQL Workbench- Schemas 出现在全新的连接中