Node.js hapi&x2B;SQLite-“是的;SQLITE“数据库已关闭”;每次测试后关闭服务器后
我正在处理nodeJS+angle项目,这是关于后端的。我正在编写测试,使用SQLite作为测试数据库,这样测试就可以在不依赖实时数据库的情况下运行。每次测试后,我都会尝试关闭hapi服务器,为下一次测试重新启动做好准备。但是当Node.js hapi&x2B;SQLite-“是的;SQLITE“数据库已关闭”;每次测试后关闭服务器后,node.js,sqlite,api,sequelize.js,hapi,Node.js,Sqlite,Api,Sequelize.js,Hapi,我正在处理nodeJS+angle项目,这是关于后端的。我正在编写测试,使用SQLite作为测试数据库,这样测试就可以在不依赖实时数据库的情况下运行。每次测试后,我都会尝试关闭hapi服务器,为下一次测试重新启动做好准备。但是当等待server.stop()时时,我收到一个SQLITE\u误用:测试日志中的数据库已关闭错误,它没有给出太多关于到底是什么导致此错误的提示 我正在使用Sequelize库在数据库中维护我的模型。有人知道为什么会这样吗?也许我应该向Sequelize插件传递某种关闭选项
等待server.stop()时调用code>时,我收到一个SQLITE\u误用:测试日志中的数据库已关闭
错误,它没有给出太多关于到底是什么导致此错误的提示
我正在使用Sequelize库在数据库中维护我的模型。有人知道为什么会这样吗?也许我应该向Sequelize插件传递某种关闭选项
错误:
'use strict';
const Lab = require('@hapi/lab');
const { expect } = require('@hapi/code');
const { afterEach, beforeEach, describe, it } = exports.lab = Lab.script();
const ServerInstance = require('../src/server');
const serverInstance = new ServerInstance("test");
describe('GET / successful', () => {
let server;
const expectedResponseCode = 200;
const expectedContent = 'ArmedStats server';
beforeEach(async () => {
server = await serverInstance.init();
});
afterEach(async () => {
await server.stop(); // LINE 19 (ERROR HERE)
});
it('responds with 200', async () => {
const res = await server.inject({
method: 'GET',
url: '/'
});
expect(res.statusCode).to.equal(expectedResponseCode);
});
it('has expected content', async () => {
const res = await server.inject({
method: 'GET',
url: '/'
});
expect(res.payload).to.equal(expectedContent);
});
});
this.server = Hapi.server({
port: 3000,
host: 'localhost'
});
}
async init() {
await this.server.initialize();
if (!registered) {
await this.server.register(require('@hapi/basic'));
await this.server.register([
{
plugin: HapiSequelize,
options: [
{
name: this.config.DB.database, // identifier
models: [__dirname + '/model/**/*.js'], // paths/globs to model files
// ignoredModels: [__dirname + '/model/**/*.js'], // OPTIONAL: paths/globs to ignore files
sequelize: new Sequelize(this.config.DB), // sequelize instance
sync: true, // sync models - default false
forceSync: false, // force sync (drops tables) - default false
},
],
},
]);
const validate = this.validate;
this.server.auth.strategy('simple', 'basic', { validate });
var routes = require('./routes');
this.server.route(routes);
registered = true;
}
return this.server;
}
exports.DB = {
dialect: 'sqlite',
host: 'localhost',
database: 'armedstatstestdb',
storage: './test/testdb.sqlite'
};
status.test.js:
'use strict';
const Lab = require('@hapi/lab');
const { expect } = require('@hapi/code');
const { afterEach, beforeEach, describe, it } = exports.lab = Lab.script();
const ServerInstance = require('../src/server');
const serverInstance = new ServerInstance("test");
describe('GET / successful', () => {
let server;
const expectedResponseCode = 200;
const expectedContent = 'ArmedStats server';
beforeEach(async () => {
server = await serverInstance.init();
});
afterEach(async () => {
await server.stop(); // LINE 19 (ERROR HERE)
});
it('responds with 200', async () => {
const res = await server.inject({
method: 'GET',
url: '/'
});
expect(res.statusCode).to.equal(expectedResponseCode);
});
it('has expected content', async () => {
const res = await server.inject({
method: 'GET',
url: '/'
});
expect(res.payload).to.equal(expectedContent);
});
});
this.server = Hapi.server({
port: 3000,
host: 'localhost'
});
}
async init() {
await this.server.initialize();
if (!registered) {
await this.server.register(require('@hapi/basic'));
await this.server.register([
{
plugin: HapiSequelize,
options: [
{
name: this.config.DB.database, // identifier
models: [__dirname + '/model/**/*.js'], // paths/globs to model files
// ignoredModels: [__dirname + '/model/**/*.js'], // OPTIONAL: paths/globs to ignore files
sequelize: new Sequelize(this.config.DB), // sequelize instance
sync: true, // sync models - default false
forceSync: false, // force sync (drops tables) - default false
},
],
},
]);
const validate = this.validate;
this.server.auth.strategy('simple', 'basic', { validate });
var routes = require('./routes');
this.server.route(routes);
registered = true;
}
return this.server;
}
exports.DB = {
dialect: 'sqlite',
host: 'localhost',
database: 'armedstatstestdb',
storage: './test/testdb.sqlite'
};
ServerInstance.init方法+服务器定义:
'use strict';
const Lab = require('@hapi/lab');
const { expect } = require('@hapi/code');
const { afterEach, beforeEach, describe, it } = exports.lab = Lab.script();
const ServerInstance = require('../src/server');
const serverInstance = new ServerInstance("test");
describe('GET / successful', () => {
let server;
const expectedResponseCode = 200;
const expectedContent = 'ArmedStats server';
beforeEach(async () => {
server = await serverInstance.init();
});
afterEach(async () => {
await server.stop(); // LINE 19 (ERROR HERE)
});
it('responds with 200', async () => {
const res = await server.inject({
method: 'GET',
url: '/'
});
expect(res.statusCode).to.equal(expectedResponseCode);
});
it('has expected content', async () => {
const res = await server.inject({
method: 'GET',
url: '/'
});
expect(res.payload).to.equal(expectedContent);
});
});
this.server = Hapi.server({
port: 3000,
host: 'localhost'
});
}
async init() {
await this.server.initialize();
if (!registered) {
await this.server.register(require('@hapi/basic'));
await this.server.register([
{
plugin: HapiSequelize,
options: [
{
name: this.config.DB.database, // identifier
models: [__dirname + '/model/**/*.js'], // paths/globs to model files
// ignoredModels: [__dirname + '/model/**/*.js'], // OPTIONAL: paths/globs to ignore files
sequelize: new Sequelize(this.config.DB), // sequelize instance
sync: true, // sync models - default false
forceSync: false, // force sync (drops tables) - default false
},
],
},
]);
const validate = this.validate;
this.server.auth.strategy('simple', 'basic', { validate });
var routes = require('./routes');
this.server.route(routes);
registered = true;
}
return this.server;
}
exports.DB = {
dialect: 'sqlite',
host: 'localhost',
database: 'armedstatstestdb',
storage: './test/testdb.sqlite'
};
DB配置:
'use strict';
const Lab = require('@hapi/lab');
const { expect } = require('@hapi/code');
const { afterEach, beforeEach, describe, it } = exports.lab = Lab.script();
const ServerInstance = require('../src/server');
const serverInstance = new ServerInstance("test");
describe('GET / successful', () => {
let server;
const expectedResponseCode = 200;
const expectedContent = 'ArmedStats server';
beforeEach(async () => {
server = await serverInstance.init();
});
afterEach(async () => {
await server.stop(); // LINE 19 (ERROR HERE)
});
it('responds with 200', async () => {
const res = await server.inject({
method: 'GET',
url: '/'
});
expect(res.statusCode).to.equal(expectedResponseCode);
});
it('has expected content', async () => {
const res = await server.inject({
method: 'GET',
url: '/'
});
expect(res.payload).to.equal(expectedContent);
});
});
this.server = Hapi.server({
port: 3000,
host: 'localhost'
});
}
async init() {
await this.server.initialize();
if (!registered) {
await this.server.register(require('@hapi/basic'));
await this.server.register([
{
plugin: HapiSequelize,
options: [
{
name: this.config.DB.database, // identifier
models: [__dirname + '/model/**/*.js'], // paths/globs to model files
// ignoredModels: [__dirname + '/model/**/*.js'], // OPTIONAL: paths/globs to ignore files
sequelize: new Sequelize(this.config.DB), // sequelize instance
sync: true, // sync models - default false
forceSync: false, // force sync (drops tables) - default false
},
],
},
]);
const validate = this.validate;
this.server.auth.strategy('simple', 'basic', { validate });
var routes = require('./routes');
this.server.route(routes);
registered = true;
}
return this.server;
}
exports.DB = {
dialect: 'sqlite',
host: 'localhost',
database: 'armedstatstestdb',
storage: './test/testdb.sqlite'
};
谢谢大家