首页 > 解决方案 > 是否可以将 webpack 与使用依赖注入的库一起使用?

问题描述

我对 webpack 很陌生,所以如果这是一个明显的答案,我深表歉意。我目前正在尝试使用此库将 typescript lambda api 部署到 AWS:https ://www.npmjs.com/package/ts-lambda-api

该库使用 Inversify 进行依赖注入:https ://github.com/inversify/InversifyJS

该库还建议仅使用 zip 进行构建,但如果可以的话,我想使用 webpack。

我的 api 目前有两个文件,一个主 api.ts 文件,然后是一个 controller.ts 文件。目前,api 类使用与 ts-lambda-api 文档中相同的行来查找控制器:

const controllersPath = [path.join(__dirname, "controllers")]
const app = new ApiLambdaApp(controllersPath, appConfig) 

因此,一旦捆绑了 api.ts 类,我需要控制器目录可供使用。目前我的 webpack 配置如下所示:

    import path = require('path')
    import webpack = require('webpack')
    
    const config: webpack.Configuration = {
        module: {
            rules: [
                { test: /\.js\.map$/, use: "ignore-loader" },
                { test: /\.d\.ts$/, use: "ignore-loader" }
            ]
        },
        mode: 'production',
        entry: {
            my_api: ['./src/my-api.js'],
        },
        output: {
            path: path.resolve(__dirname, 'dist'),
            filename: '[name]/main.js',
            library: '[name]',
            libraryTarget: 'commonjs2'
        },
        target: 'node',
        externals: [/aws-sdk.*/, 'aws-lambda']
    };
    export default config

如何添加到它以允许我的 api 访问它需要的其他类?webpack 文档在多个入口点(https://webpack.js.org/concepts/entry-points/#multi-page-application)上有一个页面,但这似乎不是我想要的给了我多个捆绑包。

我可以通过执行以下操作将多个文件放入一个包中:

api: ['./src/api.js','./src/controllers/controller.js], 

尽管这不适用于 Injectable 注释。有人有其他想法吗?

标签: node.jstypescriptwebpackaws-lambda

解决方案


我设法通过在 ts-lambda-api 文档中有关如何执行此操作的部分之后手动加载控制器来解决此问题。


推荐阅读