Node.js 需要 webpacked 模块
Posted
技术标签:
【中文标题】Node.js 需要 webpacked 模块【英文标题】:Node.js require webpacked modules 【发布时间】: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.:我尝试使用 yarn 和 yarn autoclean --force
来删除所有不必要的文件,但它只删除了总数的 5% 到 10%。
【问题讨论】:
【参考方案1】:使用当前的node
配置对象并设置fs: 'empty'
的问题是它将为这些模块提供一个空对象。有关 Webpack 节点的更多信息here。
您可以将 Webpack 的 target
属性设置为 'node'
为在类似 Node.js 的环境中使用而编译(使用 Node.js
require
加载块,而不涉及任何内置模块,如fs
或path
)
module.exports =
target: 'node'
;
阅读更多关于 Webpack 的信息Targets
另外,要导入内置模块,请使用__non_webpack_require__
生成一个未被 webpack 解析的
require
函数
【讨论】:
以上是关于Node.js 需要 webpacked 模块的主要内容,如果未能解决你的问题,请参考以下文章
Webpack 4.0.0 beta.0 发布,不再支持 Node.js 4
本地 ES 模块(浏览器或 Node.js)的热模块替换*没有* Webpack?没有构建工具