Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js hapi&x2B;SQLite-“是的;SQLITE“数据库已关闭”;每次测试后关闭服务器后_Node.js_Sqlite_Api_Sequelize.js_Hapi - Fatal编程技术网

Node.js hapi&x2B;SQLite-“是的;SQLITE“数据库已关闭”;每次测试后关闭服务器后

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插件传递某种关闭选项

我正在处理nodeJS+angle项目,这是关于后端的。我正在编写测试,使用SQLite作为测试数据库,这样测试就可以在不依赖实时数据库的情况下运行。每次测试后,我都会尝试关闭hapi服务器,为下一次测试重新启动做好准备。但是当
等待server.stop()时时,我收到一个
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'
};
谢谢大家