Ошибка «Не удалось разрешить контейнер» в Awilix - PullRequest
0 голосов
/ 13 мая 2018

Я знаю, что ошибка говорит само за себя, но на самом деле я не очень хорош с Awilix.

Вот мой загрузчик / index.js:

export default () => {
    const container = createContainer();

    container.loadModules([
        ['services/*.js', { register: asClass }],
        ['controllers/routes/*.js', { register: asClass }],
        ['global-controllers/*.js', { register: asFunction }]
    ], {
            formatName: 'camelCase',
            resolverOptions: {
                lifetime: Lifetime.SINGLETON
            }
        });

    container.register({
        apiController: asFunction(apiController).singleton(),
        schemas: asFunction(schemas)
    });

    container.register({
        errors: asValue(errors),
        Sequelize: asValue(Sequelize),
        context: asFunction(context)
    });

    return container;
};

И вот я его использую:

export default async (container) => {
    await container.resolve('context').sequelize.sync({ force: true });

    const app = express();

    app.use('/static', express.static(join(__dirname, './api/views/')));
    app.use(cookieParser(key));
    app.use(json());

    app.use('/api', container.resolve('cacheGlobal'));
    app.use('/api', container.resolve('apiController'));
    app.use('/api', container.resolve('errorGlobal'));

    return app;
}

Полное сообщение об ошибке:

UnhandledPromiseRejectionWarning: AwilixResolutionError: Не удалось разрешить 'cacheGlobal'. "

Я подумал, что это может бытьПроблема с разрешением имен Я попробовал несколько способов, и однажды это сработало! Почти что Router.use () получил объект, и он все еще падал.

1 Ответ

0 голосов
/ 13 мая 2018

Да, это была проблема, связанная с путем, просто пришлось изменить это:

['services/*.js', { register: asClass }],
['controllers/routes/*.js', { register: asClass }],
['global-controllers/*.js', { register: asFunction }]

На это:

['./api/services/*.js', { register: asClass }],
['./api/controllers/routes/*.js', { register: asClass }],
['./api/global-controllers/*.js', { register: asFunction }]
...