2017-04-15 66 views
1

我正在爲基於nodejs(6.10.2)的應用程序運行基於mocha/chai(3.2.0/3.5.0)的測試用例,在macOS 10.12 .4,我遇到了「分段故障:11」故障。在macOS上Nodejs,moch/chai在「分段錯誤:11」上失敗

到目前爲止,我曾嘗試:

  • 刪除我的node_modules文件夾,做一個新的npm install
  • 檢查過時的依賴關係,並提升他們
  • 升級版本的NodeJS(使用6.7.0), via sudo port upgrade nodejs6

對我來說失敗的代碼如下。

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

我已分別嘗試了fs.readFileSync(filepath),我沒有遇到這個問題:

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(); 
     }); 

段故障,當我刪除「附加」線消失。

這不是過去的問題,最近才成爲問題。我想知道它是否與操作系統的升級一致,但我不能確定。測試文件的大小隻有34K。

有沒有人有任何建議?

編輯:在Ubuntu測試機上出現故障並出現分段錯誤。

+0

奇怪......也許是讀取權限問題?如果在測試之前執行'fs.readFileSync()'位,那麼將文件對象傳遞給'attach()'方法是否一樣?這會告訴你它是否是readFile或者segfaults的附件。 – jakerella

回答

1

這似乎是柴代碼是'紅鯡魚'。使用segfault-handler節點模塊,我能夠確定問題實際上是由正在測試的項目中的代碼引起的(它在同一進程中運行)。

在我的情況下,堆棧跟蹤提示該問題是由sqlite3代碼中的某些內容引起的。進一步的調查顯示,這是因爲沒有處理傳遞給Promise.mapSeries的函數的返回值,該函數通過Sequelize執行sqlite SQL操作。

注意我使用藍鳥作爲我的承諾。

+0

嘗試使用[官方安裝程序](https://nodejs.org/en/)安裝Node(之後,重新構建所有依賴項以確保它們與新版本鏈接)。 – robertklep

+0

這是爲連續構建生成的VM,使用Ubuntu以及使用macOS的本地機器發生的一致故障。 –

相關問題