【问题标题】:Node.js require webpacked modulesNode.js 需要 webpacked 模块
【发布时间】:2018-09-24 19:11:03
【问题描述】:

我正试图摆脱您在npm install 各种具有自己依赖关系的模块时获得的数千个文件。

因此我想编译只使用 webpack 的库到一个 javascript 文件(和其他所需资源)中,然后以这种方式将其加载到 Node.js 项目:

  • 入口点,将被 webpack 编译成 bundle。

    module.exports = {
        lodash : require('lodash'),
        colors : require('colors'),
        test : require('test'),
        abc : require('abc')
    } ;
    
  • 主要

    var { lodash, colors, test, abc } = require('./lib/bundle') ;
    

我遇到的问题是某些模块需要系统(或不可编译)模块,例如fs,而 webpack 试图将它们捆绑到。 您只需在webpack.config.js 文件中指定:

node: {
    fs : "empty",
    electron : "empty"
}

但是,一旦打包成包,似乎每个 require('fs') 都会因为这个设置而被 Object.freeze({}) 替换,然后模块使用 fs 失败。


有人有在 Node.js 项目中使用打包模块的解决方案吗?

P.S.:我尝试使用 yarnyarn autoclean --force 来删除所有不必要的文件,但它只删除了总数的 5% 到 10%。

【问题讨论】:

    标签: javascript node.js npm webpack node-modules


    【解决方案1】:

    使用当前的node 配置对象并设置fs: 'empty' 的问题是它将为这些模块提供一个空对象。有关 Webpack 节点的更多信息here

    您可以将 Webpack 的 target 属性设置为 'node'

    为在类似 Node.js 的环境中使用而编译(使用 Node.js require 加载块,而不涉及任何内置模块,如 fspath

    module.exports = {
      target: 'node'
    };
    

    阅读更多关于 Webpack 的信息Targets

    另外,要导入内置模块,请使用__non_webpack_require__

    生成一个未被 webpack 解析的 require 函数

    【讨论】:

      猜你喜欢
      • 2018-12-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-10
      • 2016-07-20
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      • 2014-05-22
      相关资源
      最近更新 更多