首页 > 解决方案 > 使用 node 中的 webpack 作为 commonjs 模块制作 Kafka.js 外部依赖

问题描述

我正在尝试使用此配置制作 kafkajs 外部依赖项(从 webpack 包中移出):

externals: {
    kafkajs: 'kafkajs',
    redis: 'redis'
}

依赖项:

  dependencies: {
    ...
    "kafkajs": "^1.12.0",
    ...
  }

但我收到错误“找不到模块”:

{
  "error": "Initialization has failed due to: Error: Cannot find module 'kafkajs'\n    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15)\n    at Function.Module._load (internal/modules/cjs/loader.js:507:25)\n    at Module.require (internal/modules/cjs/loader.js:637:17)\n    at require (internal/modules/cjs/helpers.js:22:18)\n    at Object.<anonymous>"
}

我尝试清除缓存,再次保存依赖项并使用不同的外部配置:

externals: [
    "kafkajs",
    {
       Kafka: {
        commonjs: ["kafkajs", "Kafka"], 
    }
]

提前感谢您的任何指导

标签: javascriptnode.jswebpackdependency-injection

解决方案


如果您正在捆绑您的 node.js 应用程序,最好将所有 node_modules 标记为外部,有一个 lib 用于此,webpack-node-externals

npm install webpack-node-externals --save-dev
//webpack.config.js

const nodeExternals = require('webpack-node-externals');
...
module.exports = {
    ...
    target: 'node', // in order to ignore built-in modules like path, fs, etc.
    externals: [nodeExternals()], // in order to ignore all modules in node_modules folder
    ...
};

推荐阅读