【问题标题】:Karma proxies are not working业力代理不工作
【发布时间】:2015-09-07 09:01:00
【问题描述】:

我使用 Karma (v0.12.37) 作为测试运行器以及 JSPM (v0.16.2)。我在 karma 中添加了以下代理配置,以便正确加载 JSPM 文件:

proxies: {
    '/base/jspm_packages/': '/base/app/jspm_packages/'
}

但是这行不通,并且在以下操作中失败:

PhantomJS 2.0.0 (Windows 8 0.0.0) ERROR: 'Potentially unhandled rejection [10] Error: XHR error loading http://localhost:9876/base/jspm_packages/npm/babel-core@5.8.22.js
        Error loading http://localhost:9876/base/jspm_packages/npm/babel-core@5.8.22.js
        Error loading http://localhost:9876/base/app/pages/examples/todo-example/todo.controller.test.js'

调试日志给出:

proxying request - /base/jspm_packages/npm/babel-core@5.8.22.js to localhost:9876
/base/app/jspm_packages/npm/babel-core@5.8.22.js { host: 'localhost',
  port: 9876,
  baseProxyUrl: '/base/app/jspm_packages/',
  https: false }

但以下包含“app”的网址可以正常工作:

http://localhost:9876/base/ app/ jspm_packages/npm/babel-core@5.8.22.js

有什么线索吗?

【问题讨论】:

    标签: proxy karma-runner jspm


    【解决方案1】:

    试试:

    proxies: {
      '/app/': '/base/app/',
      '/jspm_packages/': '/base/jspm_packages/'
    }
    

    【讨论】:

    • 这很有帮助,记得将 '/app/' 更改为您在两个字符串中调用基本文件夹的任何内容。例如对我来说是 '/public_src/' : '/base/public_src/'
    【解决方案2】:

    如果您使用“/”的 baseUrl 配置了 jspm-config,请尝试删除 baseUrl 条目,因为 karma-jspm 不支持自定义 baseUrl。然后你应该能够摆脱 jspm_packages 的“代理”条目。

    见:https://github.com/Workiva/karma-jspm/issues/91

    【讨论】:

    • 我遇到了以下错误:error: XHR error (404 Not Found) loading jspm_packages/npm/babel-core@5.8.34.js。设置一个空的 baseUrl 也消除了该错误。
    【解决方案3】:

    经过大量的试验和错误,发现了以下方法:

    不要使用代理,而是更改 karma.config.js 中的 jspm paths 配置

    jspm: {
           ...
            paths: {
                "github:*": "app/jspm_packages/github/*",
                "npm:*": "app/jspm_packages/npm/*",
                'app/*': 'app/*.js'
            },
    
            ...
        },
    

    【讨论】:

      【解决方案4】:

      最终对我(karma、babel、JSPM/SystemJS)起到了作用的是:

      从 karma.conf.js 中删除 baseUrl 并拥有这个 jspm 部分:

       jspm: {
              config: 'config.js',
              loadFiles: [
                  'www/**/*.spec.js'
              ],
              serveFiles: [
                  'www/**/!(*spec).js'
              ],
              paths: {
                  "github:*": "/base/jspm_packages/github/*",
                  "npm:*": "/base/jspm_packages/npm/*",
                  'www/*': '/base/www/*'
              }
          },
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-13
        • 1970-01-01
        • 2012-03-13
        • 2017-10-04
        相关资源
        最近更新 更多