2017-04-15 8 views
1

私のnodejs(6.10.2)ベースのアプリケーションのためのmocha/chai(3.2.0/3.5.0)ベースのテストケースをmacOS 10.12で実行しています.4、 "Segmentation fault:11"というエラーが発生しています。nodejs、macosの "Segmentation fault:11"で失敗しました

これまでのところ、私が試してみました:

  • を私node_modulesフォルダを消去し、時代遅れの依存関係の確認とnodejsバージョン(6.7.0を使用していた)のアップグレード彼らに
  • をアップグレードする新しいnpm install
  • をやって、 via sudo port upgrade nodejs6

私にとって失敗したコードは次のとおりです。私は別にfs.readFileSync(filepath)を試してみました

.attach('file', fs.readFileSync(filepath), filename) 

と私は問題が発生していない:私は「添付」行を削除すると

chai.request(url) 
     .post(`/api/filestore?token=${token}`) 
     .timeout(20000) 
     .attach('file', fs.readFileSync(filepath), filename) 
     .field('name', data.name) 
     .field('description', data.description) 
     .field('keywords', data.keywords) 
     .end(function(err, res) { 
      if (err) { done(err); } 
      res.should.have.status(200); 
      res.should.be.json; 
      res.body.should.have.property('name'); 
      res.body.should.have.property('description'); 
      res.body.should.have.property('categories'); 
      res.body.keywords.should.be.a('array'); 
      res.body.keywords.join(',').should.be.equal(data.keywords); 
      done(); 
     }); 

セグメンテーションフォールト

が消えます。

これは過去の問題ではなく、最近問題になっただけです。私はそれがOSのアップグレードと一致するかどうか疑問に思っていますが、わかりません。テストファイルのサイズはわずか34Kです。

誰にも提案はありますか?

編集:Ubuntuのテストマシンでセグメンテーションエラーが発生していると失敗します。

+0

奇妙なこと...多分読み込みの問題ですか?テストの前に 'fs.readFileSync()'ビットを実行した場合は、ファイルオブジェクトを 'attach()'メソッドに渡します。同じ方法がありますか?これは、それがsegfaultsであるreadFileかattachかどうかを伝えます。 – jakerella

答えて

1

チャイコードのように思えるのは、「赤ちゃん」です。 segfault-handlerノードモジュールを使用して、問題が実際にテスト中のプロジェクトのコードによって引き起こされていることを確認できました(同じプロセスで実行されています)。

私の場合、スタックトレースは、問題がsqlite3コードの何かによって引き起こされていることを示唆していました。さらに調査したところ、Sequelizeを介してsqlite SQL操作を行っていたPromise.mapSeriesに渡された関数の戻り値を処理していないことが原因であることが判明しました。

注意私は私の約束にブルーバードを使用しています。

+0

[公式インストーラ](https://nodejs.org/ja/)を使用してNodeをインストールしてください(その後、すべての依存関係を再構築して新しいバージョンにリンクされていることを確認してください)。 – robertklep

+0

Ubuntuを使用する連続ビルドとmacOSを使用するローカルマシンの両方で一貫したエラーが発生しました。 –

関連する問題