Nodejs,moch/chai 在 macOS 上失败 "Segmentation fault: 11"
Nodejs, moch/chai failing with "Segmentation fault: 11" on macOS
我是 运行 mocha/chai (3.2.0/3.5.0) 基于 nodejs (6.10.2) 的应用程序的测试用例,在 macOS 10.12.4 ,我 运行 陷入 "Segmentation fault: 11" 失败。
到目前为止我已经尝试过:
- 正在删除我的 node_modules 文件夹并新建一个
npm install
- 检查过时的依赖项并升级它们
- 升级 nodejs 版本(使用 6.7.0),通过
sudo port upgrade nodejs6
对我来说失败的代码如下。
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();
});
当我删除 'attach' 行时,分段错误消失了:
.attach('file', fs.readFileSync(filepath), filename)
我单独尝试了 fs.readFileSync(filepath)
,没有遇到问题。
这在过去不是问题,最近才成为问题。我想知道它是否与 OS 的升级同时发生,但我不能确定。测试文件只有34K大小
有人有什么建议吗?
编辑:在 Ubuntu 测试机上失败以及分段错误。
chai 代码似乎是 'red herring'。使用 segfault-handler 节点模块,我能够确定问题实际上是由正在测试的项目中的代码引起的(在同一进程中是 运行)。
就我而言,堆栈跟踪表明问题是由 sqlite3 代码中的某些内容引起的。进一步调查显示,这是由于未处理传递给 Promise.mapSeries
的函数中的 return 值,该函数通过 Sequelize 执行 sqlite SQL 操作。
请注意,我使用 bluebird 来实现我的承诺。
我是 运行 mocha/chai (3.2.0/3.5.0) 基于 nodejs (6.10.2) 的应用程序的测试用例,在 macOS 10.12.4 ,我 运行 陷入 "Segmentation fault: 11" 失败。
到目前为止我已经尝试过:
- 正在删除我的 node_modules 文件夹并新建一个
npm install
- 检查过时的依赖项并升级它们
- 升级 nodejs 版本(使用 6.7.0),通过
sudo port upgrade nodejs6
对我来说失败的代码如下。
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();
});
当我删除 'attach' 行时,分段错误消失了:
.attach('file', fs.readFileSync(filepath), filename)
我单独尝试了 fs.readFileSync(filepath)
,没有遇到问题。
这在过去不是问题,最近才成为问题。我想知道它是否与 OS 的升级同时发生,但我不能确定。测试文件只有34K大小
有人有什么建议吗?
编辑:在 Ubuntu 测试机上失败以及分段错误。
chai 代码似乎是 'red herring'。使用 segfault-handler 节点模块,我能够确定问题实际上是由正在测试的项目中的代码引起的(在同一进程中是 运行)。
就我而言,堆栈跟踪表明问题是由 sqlite3 代码中的某些内容引起的。进一步调查显示,这是由于未处理传递给 Promise.mapSeries
的函数中的 return 值,该函数通过 Sequelize 执行 sqlite SQL 操作。
请注意,我使用 bluebird 来实现我的承诺。