1

我正在研究业力/茉莉花示例。它按原样工作正常。我需要让它与requirejs一起工作。当我引入 requirejs 并将客户端和客户端规范类转换为 AMD 时,我开始收到此错误:

PhantomJS 2.1.1 (Windows 7 0.0.0) 客户端 sayHello 应该说 hello FAILED TypeError: undefined is not a constructor (evaluating 'Pact') in js/client-spec.js (line 11) js/client-spec.js: 11:28

要查看问题,您可以查看我的示例项目。要运行它:

  1. 在上面的示例项目中提取 zip 文件
  2. 从 PactTest 目录,运行: npm install
  3. 完成后,运行: npm run test:client

干杯,迈克

4

1 回答 1

2

您需要将模块名称设置为“Pact”而不是“pact-web”。似乎 requirejs 找不到匹配的模块名称。

client-spec.js更改define为:

define(['client', 'Pact'], function (example, Pact) {

test-main.js更新配置如下:

require.config({
    baseUrl: '/base',
    paths: {
        // 'pact-web': 'node_modules/pact-web/pact-web', <-- not this
        'Pact': 'node_modules/pact-web/pact-web',
        'client': 'js/client'
    },
    deps: allTestFiles,
    callback: window.__karma__.start
})

诚然,我并不完全理解 RequireJS 的来龙去脉,但这确实有效。

我已经更新了Pact 文档以包含关于此的注释。

以下是更新 Gist 的链接以供将来参考:https ://gist.github.com/mefellows/15c9fcb052c2aa9d8951f91d48d6da54

于 2017-05-25T00:17:24.977 回答