【问题标题】:Is it possible to use webpack with a library that uses dependency injection?是否可以将 webpack 与使用依赖注入的库一起使用?
【发布时间】:2020-09-20 21:47:33
【问题描述】:

我对 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.js typescript webpack aws-lambda


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2017-01-01
      • 1970-01-01
      • 2021-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2012-03-14
      • 1970-01-01
      相关资源
      最近更新 更多