繁体   English   中英

Jest 无法识别 awilix 容器

[英]Jest doesn't recognize awilix container

这是我的代码:

babel.config.cjs
module.exports = {
    plugins: ['@babel/plugin-transform-modules-commonjs'],
    presets: [['@babel/preset-env', { targets: { node: 'current' } }]]
  }


jest.config.cjs
module.exports = {
  globals: {
    "ts-jest": {
      isolatedModules: true,
    },
  },
};


Setup.ts
import awilix from 'awilix';
import express from 'express';
import CognitoSC from './Service/Cognito.js'
import authController from './Controller/Auth.js';

const app = express();
const container = awilix.createContainer({
  injectionMode: awilix.InjectionMode.CLASSIC
});


auth.test.ts
import request from 'supertest';
import app from '../Setup.js';

describe('Testing Authentication/Authorization', function() {
    it('responds with json', async function() {
      const response = await request(app)
        .post('/signin')
        .send('username=Test')
        .send('password=Testtest123$')
      expect(response.status).toEqual(200);
      expect(response.body.data.success).toEqual(true);
    });
  });

我用tsc ("module": "es2022") 构建它。 当我运行npx jest时,我收到一条错误消息

TypeError: Cannot read properties of undefined (reading 'createContainer')

>  8 | const container = awilix.createContainer({

我注意到的有趣的事情是,如果我打开由tsc生成的Setup.js文件并将代码从

import awilix from 'awilix';

const awilix = require('awilix');

并运行npx jest ,测试通过没有问题。 我有点迷茫,无法弄清楚问题出在哪里。 我还检查了Setup.js内部,并且使用 ES6 语法导入 express 没有问题,但为什么它不能用 awilix 做同样的事情?

awilix 似乎不支持模块。

从他们的自述文件中,他们说要使用const awilix = require('awilix')

有关 import/require/ES 模块/commonJS 的更多信息,请参见此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM