2015-03-05 4 views
5

Ich benutze IO.js 1.4.3 und Jest, um meine Testsuiten auszuführen. Ich brauche eine neuere Version von V8, weil ich ES6-Funktionen wie Promises verwende.Jest (JS) Segmentierungsfehler 11 in IO.js 1.4.3 bei Verwendung von require()

Wenn ich versuche, einen möglichst einfachen Test:

describe('the truth', function() { 
    it('is true', function() { 
     expect(true).toBeTruthy(); 
    }); 
}); 

es funktioniert (zum Glück). Wenn ich schließe jedoch ein Aufruf an require() (was ich zu tun habe meinen eigenen Code zu testen), erhalte ich:

Using Jest CLI v0.4.0 
Waiting on 1 test...Segmentation fault: 11 

Dies geschieht unabhängig davon, welches Modul I gehören, und ob ich einen Anruf zu jest.dontMock() machen zuerst.

Das sagt mir nicht wirklich viel qua Fehlermeldung, und require scheint wirklich das Problem zu sein. Gibt es andere Lösungen als die Rückkehr zu pre-1.0 node.js?

+0

Können Sie ein Beispiel git Repo machen, um den Fehler zu demonstrieren? "Segmentierungsfehler" -Fehler sind schwer aufzuspüren, besonders da dies aus verschiedenen Gründen geschehen kann. – loganfsmyth

+0

Ich habe festgestellt, dass dieser Fehler direkt mit der Verwendung einer höheren Knotenversion zusammenhängt. Ein Rollback auf v0.10.38 bringt Jest zum Laufen, aber ich weiß nicht wirklich warum. – GTF

Antwort

0

Segmentierungsfehler kommen fast immer aus nativem C++ - Code, da JS solche Abstürze nur dann verursachen kann, wenn ein V8-Fehler ausgelöst wird. Daher würde ich vermuten, dass das Problem mit dem nativen Kontextmodul auftritt, von dem indirekt indirekt (über jsdom) gesprochen wird.

Es könnte sich lohnen, eine Version von jest zu hacken, die von der neuesten jsdom abhängt, die keine native Modulabhängigkeit mehr hat.

+0

Es begann mit späteren Versionen von IO.js zu arbeiten. Es gibt einige Diskussionen in verschiedenen Jest-Fragen zu diesem Thema, aber es scheint weitgehend ungelöst zu sein. – GTF

2

Dies geschieht in Fällen, in denen Sie node_modules mit node irgend Version installiert haben, und dann Umschalten später iojsnvm install iojs verwenden und versuchen, die installiert node_modules mit npm zu laufen. Es ist nicht wahrscheinlich, dass dies dein Problem ist, aber hoffentlich kann jemand anderes, der herumgehört, das versuchen und beheben.

nvm install iojs 
rm -rf node_modules 
npm install 

dann läuft was es ist, Sie versuchen, so etwas wie npm run start zu laufen, in der Regel.

+0

Sie haben Recht, dass dies nicht mein Problem war, ich hatte bereits versucht, meine Knotenmodule neu aufzubauen. Zum Glück wurde es in einigen der Jest Deps behoben. – GTF

+0

Jungs, bitte markieren Sie es als Antwort –