gpt4 book ai didi

javascript - 遇到 webpack 模块解析问题

转载 作者:数据小太阳 更新时间:2023-10-29 05:11:23 24 4
gpt4 key购买 nike

我安装了一个全局 npm 模块,我们称它为 abc-cli。现在我有一个使用此命令运行的 React app:abc-cli run

abc-cli 基本上做的是获取 app 中的组件并使用其源代码编译和运行它。

现在我想将这个 app 作为一个单独的 npm 模块发布。所以我使用 Webpack 来生成包。在解析模块时,webpack 无法解析属于 abc-cli 的模块。很明显,webpack 不知道 abc-cli 是什么。

所以我的问题是如何确保 webpack 解析模块依赖关系?有什么方法可以让 webpack 在打包时运行/编译 abc-cli

或者最坏的情况可能是如何抑制模块解析警告或忽略这些模块。因为我知道它会出现。

例子:

在我的 app 中,我有一个导入语句

import SomeComponent from '@abc/components';

现在在打包时,webpack 不会解析这个模块:

Module not found: Error: Can't resolve '@abc/components' in '/home/shishir/app/src/shared/visualizations'

如果我能解决这个问题会很有帮助。

我的 webpack 配置:

module.exports = {
mode: 'development',
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'build'),
filename: 'index.js',
libraryTarget: 'commonjs2'
},
resolve: {
extensions: ['.mjs', '.js', '.jsx']
},
module: {
rules: [
{
test: /\.(js|jsx)$/,
include: path.resolve(__dirname, 'src'),
exclude: /(node_modules|bower_components|build)/,
use: {
loader: 'babel-loader',
options: {
presets: [
'es2015',
'react',
'stage-2'
]
}
}
},
{
test: /\.css$/,
use: [
{ loader: "style-loader" },
{ loader: "css-loader" }
]
},
{
test: /\.(png|svg|jpg|gif)$/,
use: [
'file-loader'
]
}
]
},
externals: {
'react': 'commonjs react'
}
};

我尝试了 null-loader :

{
test: require.resolve("@abc/components"),
use: 'null-loader'
}

但这并没有帮助。

最佳答案

这是两种通知 webpack 额外位置以查找模块的方法。

// webpack.config.js

module.exports = {
//...
resolve: {
// 1. add extra `node_modules` directory to search path
modules: ['node_modules', '/abs_path/to/global/node_modules'],
// 2. use alias to explicitly map a module name to its exact location
alias: {
'@abc': '/abs_path/to/global/node_modules/@abc'
}
}
};

对于您的用例,如果您只有 @abc 模块位于常规本地 node_modules 目录之外,我建议您使用 resolve.alias.

来源:https://webpack.js.org/configuration/resolve/#resolvemodules .

关于javascript - 遇到 webpack 模块解析问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55236672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com