当前位置:   article > 正文

ERROR Invalid options in vue.config.js: child “outputDir“ fails because [“outputDir“ is not allowed_invalid options in vue.config.js: "output" is not

invalid options in vue.config.js: "output" is not allowed

修改构建规则后,lint报ERROR Invalid options in vue.config.js: child “outputDir” fails because [“outputDir” is not allowed to be empty]

起因

本地修改了项目单页构建的规则,结果提交代码时git pre-commit的钩子触发了vue-cli-service lint,表示校验不通过,并报

ERROR  Invalid options in vue.config.js: child "outputDir" fails because ["outputDir" is not allowed to be empty]
  • 1

分析

项目是多个单页通过build传参分开构建的,从"outputDir" is not allowed to be empty可以看出是vue.config.js配置里的outputDir传了个空值,可能是lint默认会将package.json里的script都走一遍。

处理办法

给outputDir设置默认值
在这里插入图片描述

思考

Q:原来的构建也需要传参,为什么以前的构建能通过呢?
A:先贴一段修改之后的代码

getOutputDir(project) {
        let globPath = `./src/pages/${project}/**/main.js`
        let p = ''
        console.log(globPath)
        glob.sync(globPath).forEach(function (entry) {
            const paths = entry.split('/') || []
            // 单页名,如ground-push,register...
            let [a, b, c, ...ps] = paths
            console.log('paths:',paths, ps)
            console.log('outputDir:', `dist/${ps.slice(0, ps.length - 2).join('/')}`)
            p = `dist/${ps.slice(0, ps.length - 2).join('/')}`
        })
        console.log('outputDirs:', p)
        return p
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

再贴一段修改之前的:

{
	outputDir: `dist/${project}`
}
  • 1
  • 2
  • 3

可以看出,虽然project(构建参数)为undefined,但这个字符串是有值的,而且后面试了,将outputDir设置为undefined或者null都可以lint通过,唯独上面的方法,在project为undefined时,返回的是空字符串,此时是不通过的。

总结

  • 默认配置下 vue-cli-service lint 会同时lint package.json的script的每一项(不传参数)
  • vue.config.js 的 outputDir不能配置为空字符串
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/288581
推荐阅读
相关标签
  

闽ICP备14008679号