Vite打包 error during build: TypeError: Cannot convert undefined or null to object

701 阅读2分钟

当前环境

vite: version 4.2.0

bug产生原因

在使用vite打包的时候报错:

error during build:
TypeError: Cannot convert undefined or null to object
    at Function.entries (<anonymous>)
    at build (file:///C:/Users/mi/Desktop/Video/video_theater/node_modules/vite/dist/node/chunks/dep-d305c21f.js:46177:49)
    at async CAC.<anonymous> (file:///C:/Users/mi/Desktop/Video/video_theater/node_modules/vite/dist/node/cli.js:813:9)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/

image.png

问题排查

  1. 问题是说在打包的过程中 函数 entries 之中发生了类型的读取错误不能将undefined或者null转化为object
  • 问题描述很简单没办法定位原因
  • 给出了两个报错文件的sourcemap的位置
  • 查看一下报错是啥原因
  1. 查看一下文件

    文件1 vite/dist/node/chunks/dep-d305c21f.js:461

image.png

当前build函数执行,传入的inlineConfig = {} 是哟个对象,又叫config 又叫build,这部明摆着就是读取的 ** vite.config.js 之中相关配置.再看代码读的是libOptions

  1. 好的知道是配置原因,去看配置吧,仔细想想报错是因为无法把undefined和null转化为object,当然想一下如果是你是框架作者,肯定会给某些配置设置默认值的,所以真相只有一个 ====> 某些配置本来不设置,会有默认值,但是我设置了之后导致默认值失效,但是我又没有配置.(检查代码)
  2. 看一下配置

配置 image.png vite源码 image.png

  1. 好家伙,破案了

    build的lib选项我在初始化配置的时候想着全部配置齐全的时候把相关设置一股脑的全部拿过来了,lib没有值给了个空的object,导致vite打包读取的时候lib里未配置报错,所以有事没事别动不动的把配置拿过来就写,

  2. 切记

配置不是越多越好, 用啥配啥, 配的越多冲突越多,报错越多!!!!!!!!