vue-cli-сервис [vuejs3]: почему vue-cli-сервис терпит неудачу в глобальном масштабе, но завершается успешно в локальном проекте?

#node.js #npm #vuejs3 #vue-cli

Вопрос:

Версии:

 vueJS: 3.x
vue-cli-service: 4.5.13
npm: 7.21.0
node: v16.8.0
 

Я установил vue-cli-service глобально. Если я настрою scripts свойство в своем проекте package.json так, чтобы оно выглядело следующим образом:

   "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "test:unit": "vue-cli-service test:unit",
    "test:e2e": "vue-cli-service test:e2e",
    "lint": "vue-cli-service lint",
    "vue-cli-service": "vue-cli-service"
  },
 

затем из корневого каталога проекта я могу успешно запускать команды из своей оболочки терминала, такие как:

 $ npm run vue-cli-service --version
7.21.0
 

Но оставаясь в корне проекта, если я затем выполню эту команду:

 $ vue-cli-service --version
 

Я возвращаю эту ошибку:

 node:internal/modules/cjs/loader:936
  throw err;
  ^

Error: Cannot find module '@vue/cli-plugin-babel'
Require stack:
- /usr/local/lib/node_modules/@vue/cli-service/lib/Service.js
- /usr/local/lib/node_modules/@vue/cli-service/bin/vue-cli-service.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
    at Function.Module._load (node:internal/modules/cjs/loader:778:27)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:94:18)
    at idToPlugin (/usr/local/lib/node_modules/@vue/cli-service/lib/Service.js:145:14)
    at /usr/local/lib/node_modules/@vue/cli-service/lib/Service.js:184:20
    at Array.map (<anonymous>)
    at Service.resolvePlugins (/usr/local/lib/node_modules/@vue/cli-service/lib/Service.js:170:10)
    at new Service (/usr/local/lib/node_modules/@vue/cli-service/lib/Service.js:32:25)
    at Object.<anonymous> (/usr/local/lib/node_modules/@vue/cli-service/bin/vue-cli-service.js:15:17) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/usr/local/lib/node_modules/@vue/cli-service/lib/Service.js',
    '/usr/local/lib/node_modules/@vue/cli-service/bin/vue-cli-service.js'
  ]
}
 

Почему?

ПРИМЕЧАНИЕ: мое приложение VueJS работает нормально. Так что делайте юнит-тесты с шуткой. Мне в основном любопытно, почему vue-cli-service , кажется, теряется контекст при глобальном охвате (несмотря на то, что он находится в хорошо настроенном проекте).

Спасибо.