我需要一个使用fs的模块(中文-令牌)。Webpack提示一个没有找到fs的错误。我在网上找到的所有解决方案都建议使用目标:“节点”,但是我的应用程序是针对“web”的。
有什么方法可以在模块工作的同时避免这个错误呢?
发布于 2022-02-14 03:32:19
这个问题的发生可能是因为您使用Webpack 5。在为browser/web创建包时,Webpack通常会填充核心的Node.js模块。但情况已不再如此。
要解决这个问题,本质上,你必须告诉Webpack填充这个模块。要做到这一点,有多种选择。
首先,您可以使用node-polyfill-webpack-plugin,它负责捆绑Webpack遇到的任何核心Node.js模块。
在您Webpack配置中,webpack.config.js文件,只需添加这个插件
const NodePolyfillPlugin = require("node-polyfill-webpack-plugin")
module.exports = {
// Other config...
plugins: [
new NodePolyfillPlugin()
]
};其次,您可以编写自己的配置来告诉Webpack有关此模块的信息:
// webpack.config.js
module.exports = {
// Other configuration
resolve: {
fallback: {
fs: require.resolve('fs')
}
}
};第三,您可以提供自己的模拟实现,而不是使用实际的模块。这就是您应该使用的捆绑实际fs模块的方法,对于浏览器代码来说没有任何意义,并且可能会存在Webpack可能无法绑定的fs模块的传递依赖关系。有关更多详细信息,请参阅此链接。
另外,确保您没有使用由loadFile模块提供的chinese-tokenizer函数。这是使用Node的fs模块的唯一函数。
https://stackoverflow.com/questions/71106742
复制相似问题