webpack 1:resolve.alias 不将一个 npm 模块别名到另一个 npm 模块

webpack 1: resolve.alias not aliasing one npm module to another

本文关键字:模块 npm 一个 别名 另一个 resolve alias webpack      更新时间:2023-09-26

我有一个 webpack 配置,用于为同构 React 应用程序创建服务器捆绑包。 在该配置中,我尝试使用 resolve.alias 将一个模块 ( parse ) 别名为另一个模块 ( parse/node )。这个关于 webpack 文档中resolve.alias的方便图表使这看起来应该是可能的。这是我的别名对象的样子:

alias: {
    parse: 'parse/node',
    pubnub: 'static/deps/pubnub/pubnub-3.13.0.min.js'
}

我已经在为模块pubnub使用别名,并且该别名按预期工作。不幸的是,无论我对解析键做什么,似乎都不会改变我的 webpack 构建bundle.js中的结果要求:

/***/ function(module, exports) {
    module.exports = require("parse");
/***/ },

我正在尝试解决/node_modules/parse/node.js.使用绝对/相对路径似乎不起作用,也没有在末尾添加.js扩展。在这一点上,我无法弄清楚这是一个 webpack 错误还是我忽略的东西。任何帮助将不胜感激!以下是我的完整 webpack 配置要点的链接:https://gist.github.com/daleee/a0025f55885207c1a00a

node@5.7.0
npm@3.7.5
webpack@1.12.14

问题出在 webpack 配置中的以下行上:

...,
externals: [nodeExternals({
    whitelist: ['webpack/hot/poll?1000']
})],
...,

webpack-node-externals 是一个 webpack 插件,用于自动将 node_modules 中找到的模块列入黑名单。在为后端构建时,通常不需要将 npm 模块与最终捆绑包捆绑在一起,因为 npm 模块安装在系统上。这个黑名单还阻止了 webpack 对任何 npm 模块进行任何别名处理。像这样更改whitelist数组解决了我的问题:

...,
externals: [nodeExternals({
    whitelist: ['webpack/hot/poll?1000', 'parse']
})],
...,

这个故事的寓意是:在没有完全理解代码的作用之前,不要从样板中复制代码。如果我只是阅读我正在使用的 webpack 插件的README.md,我本可以节省几天的头痛。