gpt4 book ai didi

javascript - 为什么我需要为 karma 配置指定所有文件,即使它们是用 requirejs 加载的

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:56:47 25 4
gpt4 key购买 nike

我有以下目录结构:

--app
|---dots
| |---some.js
|
|---entry.js
|---bootstrap.js
|---karma.conf.js
|---test-main.js
|---test
|---sampleSpec.js

这是我的 sampleSpec 依赖项:

define(["app/bootstrap", "app/dots/some"], function () {}]

据我所知,我使用 requirejs 将 bootstrapsome 文件加载到浏览器中。但是,根据我是否在我的 karma.conf.js 文件中指定了 dots/* 文件夹, karma 服务器成功或无法解析 dots/some.js 文件。我的意思是,如果我在 karma.conf.js 中指定以下 pattern: 'app/**/*.js':

files: [
'test-main.js',
{pattern: 'app/**/*.js', included: false},
{pattern: 'test/*Spec.js', included: false}
],

dots/some.js 文件被加载到浏览器中,如果我这样指定 pattern: 'app/*.js' karma 服务器返回 404 - 找不到文件。为什么会这样?如果我使用 requirejs 加载它,为什么 karma 应该关心路径?

最佳答案

当你点燃 karma 时, karma 所做的是:

  • 它做一些预处理工作
  • 它会创建一个网页,您的网络资源会在其中加载(css、js 等...)
  • 它创建一个网络服务器来为您的 Assets 提供服务

网络服务器需要知道您在哪里拥有自己的 Assets ,以及您是想直接从页面提供它们还是稍后加载它们。

在你的 karma 配置文件中,你有几个选项来配置你想要如何加载它们:

...
files: [
'test-main.js',
{pattern: 'app/**/*.js', included: true, watched: false, served: true},
...
],

proxies: {
'/img/': 'http://localhost:8080/base/test/images/'
}

files 数组中,您可以放置​​所有您想要包含、观看和提供的资源。

如果您想改为使用自定义 URL(假设您的应用程序中有特定路由),您可以告诉 karma 如何将该自定义 URL 反射(reflect)到静态 URL 或简单地映射它(假设您正在使用第三方服务)。

如果文件未映射,karma 将不会提供它,因此当您需要它时,您的请求将有一个 HTTP 404 响应。
Karma 还接受正则表达式模式(最小匹配字符串)作为路由 - 如文档中指定 - 因此您的 app/**/*.js 将匹配 app 中的任何 js 文件任何级别,而 app/*.js 只会严格匹配 app 文件夹内的 JS 文件。

在代理的情况下,假设您有兴趣提供图像,karma 会设置一个静态服务器,其中 http://localhost:8080/base 映射您的项目根目录。

有关完整说明,请查看 karma documentation .

关于javascript - 为什么我需要为 karma 配置指定所有文件,即使它们是用 requirejs 加载的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27907347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com