升级Node.js 20及Webpack相关依赖后出现TypeError: Cannot read properties of undefined (reading 'join')错误求助
升级Node.js 20及Webpack相关依赖后出现TypeError: Cannot read properties of undefined (reading 'join')错误求助
我正在维护一个遗留的MEAN项目,最近把Node.js升级到了20版本,同时更新了webpack、webpack-command、webpack-cli和node-sass这些包。现在用yarn启动项目的时候遇到了报错,已经折腾好几个小时了,试过更新各种包来适配Node.js 20,但还是卡在这儿,真心希望有人能帮忙解决这个问题!
相关信息说明
- 原问题中包含我的package.json配置截图
- 遇到的核心错误为:
TypeError: Cannot read properties of undefined (reading 'join')(原问题中有报错信息截图)
我的Webpack配置文件(内容有截断)
var path = require('path'); var webpack = require('webpack'); const CleanWebpackPlugin = require('clean-webpack-plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const CompressionPlugin = require("compression-webpack-plugin"); const OptimizeCssAssetsPlugin = require("optimize-css-assets-webpack-plugin"); const UglifyJsPlugin = require("uglifyjs-webpack-plugin"); // 以下为未完成的配置内容...
一些我梳理的可能排查方向(供参考)
- 先查依赖兼容性:Node.js 20对部分旧Webpack插件不太友好,比如
clean-webpack-plugin如果是老版本,大概率不支持Node.js 20,建议直接升级到它的最新稳定版;另外node-sass已经停止维护了,Node.js 20根本不兼容它,不如直接换成官方推荐的sass(dart-sass)试试 - 定位报错源头:看看报错的调用栈,找到具体是哪个文件、哪个插件抛出的这个
join错误,通常这种问题都是某个路径变量没定义,导致调用path.join的时候参数是undefined - 检查Webpack配置里的路径:比如
output.path、入口文件路径这些配置项,有没有写错或者用了未定义的变量 - 调整Webpack版本:如果是最新版Webpack和Node.js 20有冲突,可以试试降级到Webpack 5.80+的稳定版本,这个区间的版本对Node.js 20支持比较成熟
备注:内容来源于stack exchange,提问作者zohaib alvi
相关产品推荐
相关产品推荐

