"undefined" |0|ReferenceError: Strict mode verbietet implizite Erzeugung-global property 'csrf_token'
So, das war ein ziemlich Interessantes problem, das ich gelaufen.
Ich bin derzeit am Aufbau eines backbone.js - Schienen-app. In der Regel bauen diese für Lernzwecke. Ich bin (wie jeder gute rails-dev) ich Tue mein bestes, bei TDD/BDD und ich lief in ein problem mit capybara.
Habe ich eine integration spec, die lediglich tests root_path funktioniert (Backbone-Geschichte beginnt, zeigt Sie erste Informationen, etc...).
require 'spec_helper'
describe "RentalProperties", js: true do
describe "GET /" do
it "should show a list of properties" do
visit root_path
eventually{page.should have_content("Something")}
end
end
end
Bin ich der Ausführung von tests mit jasmine, sinon, und capybara/rspec/webkit. Ich bin Locker folgenden werden sowohl die "Rspec auf Schienen" Buch von thoughtbot (Super Buch übrigens), und dieses tutorial: http://tinnedfruit.com/2011/03/03/testing-backbone-apps-with-jasmine-sinon.html.
Beim ausführen der oben genannten Skillung, stieß ich auf diese Fehlermeldung:
undefined|0|ReferenceError: Strict mode forbids implicit creation of global property 'csrf_token'
Ich nahm eine lange Zeit zu Sortieren, weil es gibt wirklich nichts von google-in der Lage, für diesen Fehler.
Schließlich stolperte ich über die Verwendung von "use strict-Modus" in JS. Im wesentlichen wird dieser einige neue EMCA5 Skript-Konventionen. Es fängt mehr eine Kodierung Patzer, und halten Sie den Zugriff auf Globale Variablen. Alle guten Dinge.
So, ich schauen, und in meine sinon.js die Datei, die ich sehe:
"use strict";
in Zeile 36 der Datei. Und siehe da, die ich kommentieren Sie die Zeile aus, und meine tests gut funktionieren.
Hier ist meine Frage: Warum haben strenge Durcheinander csrf? Ich gehe davon aus das hat etwas zu tun mit csrf_meta_tags in meine rails-layout. Wenn möglich, würde ich gerne diese Zeile zurück, in der sinon-js, da ich davon ausgehen, dass seine "richtige zu tun"
Hat jemand mehr Informationen dazu? Ich Schätze alle details im Voraus!!
InformationsquelleAutor cpow | 2012-12-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist Ihnen zu sagen, dass ein Wert wird einer Variablen zugewiesen, genannt
csrf_token
, die nicht deklariert wurde, z.B.Im nicht–strict-Modus zu schaffen, der eine Eigenschaft des globalen Objekts (in der Regel als eine Globale variable) genannt
csrf_token
wenn die Codezeile ausgeführt wird.Im strict-Modus ist, wird es werfen Sie die Fehler sehen wird, da im strikten Modus wird verhindert, dass die implizite Erstellung von globalen Variablen. Sie könnte auch das Problem beheben, indem einschließlich:
überall in einem globalen Kontext, in dem gleichen script-element der code der Fehler kommt, oder eine Vorherige script-element.
InformationsquelleAutor RobG