Запуск dev-сервера в проекте, созданном Vue cli 3
Я установил Vue cli 3 глобально в моей системе windows, используя npm i -g @vue/cli
.
затем я создал проект с помощью vue create vue-project
Я выбрал необходимые плагины, необходимые через подсказки .
это создало папку Vue-projject. Затем я изменил каталог в эту папку и запустил .
но я получаю следующую ошибку
PS E:rkworkspacevue-project> npm run serve
> vue-project@0.1.0 serve E:rkworkspacevue-project
> vue-cli-service serve
INFO Starting development server...
94% asset optimization
ERROR Failed to compile with 1 errors 14:58:40
error in ./src/main.js
Module build failed: Error: [BABEL] E:rkworkspacevue-projectsrcmain.js: The new decorators proposal is not supported yet. You must pass the `"decoratorsLegacy": true` option to @babel/preset-stage-2 (While processing: "E:rkworkspacevue-projectnode_modules@vuebabel-preset-appindex.js")
at E:rkworkspacevue-projectnode_modules@babelpreset-stage-2libindex.js:107:11
at E:rkworkspacevue-projectnode_modules@babelhelper-plugin-utilslibindex.js:18:12
at E:rkworkspacevue-projectnode_modules@babelcorelibconfigfull.js:172:14
at cachedFunction (E:rkworkspacevue-projectnode_modules@babelcorelibconfigcaching.js:42:17)
at loadPresetDescriptor (E:rkworkspacevue-projectnode_modules@babelcorelibconfigfull.js:243:63)
at E:rkworkspacevue-projectnode_modules@babelcorelibconfigfull.js:68:19
at Array.map (<anonymous>)
at recurseDescriptors (E:rkworkspacevue-projectnode_modules@babelcorelibconfigfull.js:66:36)
at recurseDescriptors (E:rkworkspacevue-projectnode_modules@babelcorelibconfigfull.js:97:26)
at loadFullConfig (E:rkworkspacevue-projectnode_modules@babelcorelibconfigfull.js:112:6)
@ multi (webpack)-dev-server/client/index.js (webpack)/hot/dev-server.js ./src/main.js
как мне это исправить?
2 ответов
обновление: исправление теперь доступно в v3.0.0-beta.7
. В настоящее время это исправление opt-in, поэтому вам нужно добавить decoratorsLegacy:true
до .babelrc
вновь созданного проекта Vue:
{
"presets": [
[
"@vue/app",
{
"decoratorsLegacy": true
}
]
]
}
чтобы исправить существующий проект, отредактируйте .babelrc
как показано выше, обновите package.json
заменить beta.6
С beta.7
и перезапустите yarn
/npm install
.
TLDR: здесь PR (vue-cli
#1163) исправить проблема, но лучшее решение IMO-использовать .babelrc.js
(ниже).
есть GitHub вопрос, комментарий что означает @babel/preset-stage-2@7.0.0-beta.44
помог бы, но установка его не помогла. Другой предложение заменить Бабеля presets
config в .babelrc
со следующим действительно разрешена ошибка:
{
"presets": [
// "@vue/app", // REMOVE THIS
["@babel/preset-env", {
"targets": {
"browsers": [
"> 5%",
"last 2 versions",
"not ie <= 8"
]
},
"modules": false,
"exclude": [
"transform-regenerator"
]
}],
["@babel/preset-stage-2", {
"useBuiltIns": true,
"decoratorsLegacy": true
}]
]
}
Примечание @vue/app
предустановка должна быть удалена, потому что она инициализирует @babel/preset-stage-2
без необходимого собственность (decoratorsLegacy: true
). Это решение работает, но оно не совместимо с любыми потенциальными улучшениями, сделанными в @vue/app
preset (включая любые исправления для этой самой проблемы).
.babelrc.js
более прямой совместимый обходной путь-обернуть @vue/app
preset и изменить config для @babel/preset-stage-2
. Когда ремонтники исправляют @vue/app
, мы можем просто вернуться к значению по умолчанию .babelrc
. Чтобы получить эту работу, переименуйте .babelrc
to .babelrc.js
и замените его содержимое с:
const vueBabelPreset = require('@vue/babel-preset-app');
module.exports = (context, options = {}) => {
// Cache the returned value forever and don't call this function again.
context.cache(true);
const {presets, plugins} = vueBabelPreset(context, options);
// Find @babel/preset-stage-2, and update its config to enable `decoratorsLegacy`.
const presetStage2 = require('@babel/preset-stage-2');
const preset = presets.find(p => p[0] === presetStage2);
if (preset) {
preset[1].decoratorsLegacy = true;
}
return {
presets,
plugins
};
}
соответствующие сопровождающие их соответствующих пакетов знают об этой проблеме. Per this Github вопрос, vue create <project-name>
в настоящее время сломан.
Я пробовал некоторые из решений, представленных в проблеме, и никто не работает для меня. Вы могли бы дать им попробовать и посмотреть, работают ли они на вас.