Почему ic-ajax не определен в определенных функциях Ember CLI?

Прости мое невежество, но я не могу заставить работать ic-ajax внутри определенных функций.

В частности, я бы хотел, чтобы этот тест работал, но для Ember CLI: например, http://coderberry.herokuapp.com/testing-your-ember-application

Я могу вызывать ajax внутри Ember.Object.Extend и вне функций и определений объектов, но не в модулях, тестах или модельной функции Ember.Route.

Я что-то неправильно понимаю или в моем приложении неверная конфигурация?

Я понял, что в функциях я могу сделать:

ajax = require('ic-ajax')['default'];
defineFixture = require('ic-ajax')['defineFixture'];

но я уверен import вверху файла предполагается работать.

Я испытываю это на Ember 0.40.0 (как в моем существующем приложении, так и в новом приложении). Смотрите ниже для более подробной информации, где я нахожу это неопределенным. настройка var ajax = icAjaxRaw вне функций тоже не работает. Я немного не в себе, поэтому любая помощь, которую вы могли бы оказать в этом отношении, была бы полезна.

пользователей-test.js:

import ajax from 'ic-ajax';
import { raw as icAjaxRaw } from 'ic-ajax';
import { defineFixture as icAjaxDefineFixture } from 'ic-ajax';

debugger;

---> здесь определено icAjaxDefineFixture

module('Users', {
  setup: function() {

    App = startApp();
    debugger;

icAjaxDefineFixture -> НЕ УКАЗАНО

  },
  teardown: function() {
    Ember.run(App, App.destroy);
  }
});

test("Sign in", function() {

icAjaxDefineFixture -> НЕ УКАЗАНО

  expect(1);
  visit('/users/sign-in').then(function() {
    equal(find('form').length, 1, "Sign in page contains a form");
  });
});

Brocfile.js (я не думаю, что они действительно нужны с новым аддоном ember-cli-ic-ajax):

app.import('vendor/ic-ajax/dist/named-amd/main.js', {
  exports: {
    'ic-ajax': [
      'default',
      'defineFixture',
      'lookupFixture',
      'raw',
      'request',
    ]
  }
});

1 ответ

Решение

Была такая же проблема. Оказывается, это проблема оптимизации отладчика Chrome, ознакомьтесь с этим сообщением в блоге http://johnkpaul.com/blog/2013/04/03/javascript-debugger-surprises/

При отладке, если вы попытаетесь использовать переменную из области закрытия в консоли, которая фактически не использовалась в источнике, вы будете удивлены ReferenceErrors. Это связано с тем, что отладчики JavaScript оптимизируют ваш код и удаляют переменные из лексической среды функции, если они не используются.

Чтобы поиграться в отладчике, я просто набрал ajax; внутри замыкания и переменная магически появилась.

Другие вопросы по тегам