用的是react + ts + craco,没有eject
报错原因:Cannot set property 'cdn' of undefined
如果不用ts就没有这个错误
以下是craco.config.js
const path = require('path');
const { whenProd, getPlugin, pluginByName } = require('@craco/craco');
module.exports = {
webpack: {
alias: {
'@': path.resolve(__dirname, 'src')
},
configure: (config) => {
let cdn = {
js: [],
css: []
}
whenProd(() => {
config.externals = {
react: 'React',
'react-dom': 'ReactDOM'
}
cdn = {
js: [
'https://cdnjs.cloudflare.com/ajax/libs/react/18.1.0/umd/react.production.min.js',
'https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.1.0/umd/react-dom.production.min.js',
],
css: []
}
})
const { isFound, match } = getPlugin(
config,
pluginByName('HtmlWebpackPlugin')
)
if (isFound) {
match.options.cdn = cdn // 这行报错
}
return config
}
},
}
打印下看看是啥内容
console.log(match.options)
看起来像是TypeScript中没有正确定义类型导致的,检查一下报错的那行代码中的 "cdn" 变量是否正确定义了类型,并确保它的类型与要赋值的类型相同。
错误是因为在 TypeScript 中,config 变量的类型可能不包含 HtmlWebpackPlugin 插件,导致无法设置 cdn 属性。match.options里面没有cdn属性,是否正确定义了类型,与要赋值的类型是否相同。
错误提示不能设置没有定义的cdn属性,match.options里面没有cdn属性或者match和match.option没有定义