Zombiejs jQuery nullTypeError 'compareDocumentPosition' - PullRequest
1 голос
/ 21 февраля 2012

Zombie: не удалось прочитать свойство 'compareDocumentPosition' со значением null TypeError: невозможно прочитать свойство 'compareDocumentPosition' из ноль

Это происходит каждый раз, когда я пытаюсь загрузить страницу, содержащую jQuery, используя Zombiejs. Это случилось со мной в Debian & Windows, с множеством разных страниц, с разными версиями jQuery и с ничем другим на странице.

Кажется, это как-то связано с тем, как jsDom оценивает jQuery до того, как документ страницы готов, но это довольно далеко у меня над головой.

Кто-нибудь сталкивался с этим, знает обходной путь или есть какие-нибудь указатели? Спасибо!

ОБНОВЛЕНИЕ: Это мой тест (который на самом деле проходит, но при запуске с отладкой выдает упомянутую мной ошибку):

zombie = require "zombie"
browser = new zombie.Browser({debug: false})
$ = require "jquery"
require "should"    

app = "http://localhost:3000/"

describe "app", ->
  describe "index", ->
    it "should display correct title", (done) ->
      browser.visit app, (err, browser) ->
        done()

И это ошибка:

Zombie: GET http://localhost:3000/js/jquery-1.7.1.js => 200 Zombie: Cannot read property 'compareDocumentPosition' of null TypeError: Cannot read property 'compareDocumentPosition' of null
    at Object.<anonymous> (/js/jquery-1.7.1.js:4807:30)
    at Object.<anonymous> (/js/jquery-1.7.1.js:5301:2)
    at Object.<anonymous> (/js/jquery-1.7.1.js:9266:2)
    at Object._evaluate (/home/dev/Hg/rpg-chat-bdd/node_modules/zombie/lib/zombie/browser.js:136:28)
    in /js/jquery-1.7.1.js

, который вызывает другие ошибки, потому что '$' не определено в остальных моих сценариях.

Это HTML-код страницы, которую я тестирую:

<title>Welcome to Test!</title>

<body>
  <div id="main">
  </div>

  <script type="text/javascript" src="/js/jquery-1.7.1.js"></script>
  <script type="text/javascript" src="/js/application.js"></script>
</body>

1 Ответ

5 голосов
/ 25 февраля 2012

это выстрел в темноте, но я клонировал https://github.com/assaf/zombie.git и добавил для сравненияDocumentPosition.Первая строка (и), найденная в файлах, выглядит следующим образом:

if ( document.documentElement.compareDocumentPosition ) {

Теперь document.documentElement обычно указывает на тег <html>, возможно, вам это не хватает?

...