vuejs / vue-cli

🛠️ webpack-based tooling for Vue.js Development
https://cli.vuejs.org/
MIT License
29.75k stars 6.33k forks source link

Unclear error when "name" missing from package.json for PWAs #5115

Open probablykasper opened 4 years ago

probablykasper commented 4 years ago

Version

4.1.2

Reproduction link

https://github.com/probablykasper/vue-pwa-name-bug

Environment info

  System:
    OS: macOS Mojave 10.14.6
    CPU: (8) x64 Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz
  Binaries:
    Node: 12.14.1 - /var/folders/44/3sxbyc2d6wg90mj1s7s59bnm0000gn/T/fnm-shell-7432057/bin/node
    Yarn: 1.19.2 - /usr/local/bin/yarn
    npm: 6.13.4 - /var/folders/44/3sxbyc2d6wg90mj1s7s59bnm0000gn/T/fnm-shell-7432057/bin/npm
  Browsers:
    Chrome: 79.0.3945.130
    Firefox: 70.0.1
    Safari: 13.0.4
  npmPackages:
    @vue/cli-overlay:  4.1.2 
    @vue/cli-plugin-pwa: ^4.1.0 => 4.1.2 
    @vue/cli-plugin-router:  4.1.2 
    @vue/cli-plugin-vuex:  4.1.2 
    @vue/cli-service: ^4.1.0 => 4.1.2 
    @vue/cli-shared-utils:  4.1.2 
    @vue/component-compiler-utils:  3.1.1 
    @vue/preload-webpack-plugin:  1.1.1 
    @vue/web-component-wrapper:  1.2.0 
    vue: ^2.6.10 => 2.6.11 
    vue-hot-reload-api:  2.3.4 
    vue-loader:  15.8.3 
    vue-style-loader:  4.1.2 
    vue-template-compiler: ^2.6.10 => 2.6.11 
    vue-template-es2015-compiler:  1.9.1 
  npmGlobalPackages:
    @vue/cli: 4.1.2

Steps to reproduce

  1. Run vue create and enable pwa support
  2. Remove name from package.json
  3. Run npm run build

What is expected?

An error saying "name" is missing from package.json

What is actually happening?

The following error appears:

 ERROR  ValidationError: child "cacheId" fails because ["cacheId" is not allowed to be empty]
ValidationError: child "cacheId" fails because ["cacheId" is not allowed to be empty]
    at Object.exports.process (/Users/kasper/dev/git/vue-pwa-name-bug/node_modules/@hapi/joi/lib/errors.js:202:19)
    at internals.Object._validateWithOptions (/Users/kasper/dev/git/vue-pwa-name-bug/node_modules/@hapi/joi/lib/types/any/index.js:763:31)
    at internals.Object.validate (/Users/kasper/dev/git/vue-pwa-name-bug/node_modules/@hapi/joi/lib/types/any/index.js:797:21)
    at module.exports (/Users/kasper/dev/git/vue-pwa-name-bug/node_modules/workbox-build/build/entry-points/options/validate.js:11:35)
    at /Users/kasper/dev/git/vue-pwa-name-bug/node_modules/workbox-build/build/entry-points/generate-sw-string.js:47:21
    at Generator.next (<anonymous>)
    at asyncGeneratorStep (/Users/kasper/dev/git/vue-pwa-name-bug/node_modules/@babel/runtime/helpers/asyncToGenerator.js:3:24)
    at _next (/Users/kasper/dev/git/vue-pwa-name-bug/node_modules/@babel/runtime/helpers/asyncToGenerator.js:25:9)
    at /Users/kasper/dev/git/vue-pwa-name-bug/node_modules/@babel/runtime/helpers/asyncToGenerator.js:32:7
    at new Promise (<anonymous>)
    at /Users/kasper/dev/git/vue-pwa-name-bug/node_modules/@babel/runtime/helpers/asyncToGenerator.js:21:12
    at _generateSWString (/Users/kasper/dev/git/vue-pwa-name-bug/node_modules/workbox-build/build/entry-points/generate-sw-string.js:63:28)
    at generateSWString (/Users/kasper/dev/git/vue-pwa-name-bug/node_modules/workbox-build/build/entry-points/generate-sw-string.js:39:28)
    at /Users/kasper/dev/git/vue-pwa-name-bug/node_modules/workbox-webpack-plugin/build/generate-sw.js:115:26
    at Generator.next (<anonymous>)
    at asyncGeneratorStep (/Users/kasper/dev/git/vue-pwa-name-bug/node_modules/@babel/runtime/helpers/asyncToGenerator.js:3:24)

The error still appears when vue.pwa.name is set in package.json.

probablykasper commented 4 years ago

Related issue: #4166

LinusBorg commented 4 years ago

Sidenote: package.json format requires a name, leaving it out might create problems in unexpected areas in general.

probablykasper commented 4 years ago

@LinusBorg Are you sure? When private is set to true, npm install doesn't warn you about the name field being missing. If it was required, I would expect a warning.

Edit: The npm package.json docs do indeed say it's required. The missing warning doesn't seem to be mentioned anywhere though.

LinusBorg commented 4 years ago

They say they are required when you wanna publish it only. But I bet a lot of code out there expects the name field to exist.