Как я могу сказать Vue-cli, где находится точка входа моего приложения? - PullRequest
0 голосов
/ 16 октября 2018

Мое приложение разделено на API и часть пользовательского интерфейса.Стратегия развертывания требует от них общего package.json.Структура файла выглядит так:

client/
       src/
           main.js
api/
package.json
vue.config.js

Я использую стандартные скрипты vue-cli.

package.json

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

Когда я делаю npm run serve:ui, я получаю

This relative module was not found:

* ./src/main.js in multi ./node_modules/@vue/cli-service/node_modules/webpack-dev-server/client?http://10.0.2.15:8080/sockjs-node ./node_modules/@vue/cli-service/node_modules/webpack/hot/dev-server.js ./src/main.js

Итак, я попытался изменить vue.config.json согласно документам :

vue.config.js

const path = require('path');
module.exports = {
    entry: {
        app: './client/src/main.js'
    }
}

Теперь я получаюошибка:

 ERROR  Invalid options in vue.config.js: "entry" is not allowed

Как мне сказать vue-cli, где находится моя точка входа в приложение?

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

Я полагаю, что вы пытаетесь запустить, создаете приложение nodejs с vue в качестве внешнего интерфейса.Я столкнулся с некоторыми проблемами, подобными тому, что было некоторое время назад, и я исправил это, установив laravel-mix в проект, который помогает мне компилировать vue."scripts": { "start": "node app.js", "dev": "NODE_ENV=development webpack --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", "watch": "NODE_ENV=development webpack --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js | nodemon app.js", "hot": "NODE_ENV=development webpack-dev-server --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", "production": "NODE_ENV=production webpack --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js | node app.js" },

Поэтому, когда я запускаю npm run watch, он запускает команду vue-cli и запускает приложение узла.все в реальном времени.Создайте новый файл в корневом каталоге с именем webpack.mix.js

Вставьте эти строки let mix = require("laravel-mix"); mix.js("src/js/app.js", "public/js") .sass('src/scss/app.scss', 'public/css');

src/js/app.js - основной файл VUE, который компилируется в public/css

0 голосов
/ 16 июля 2019

Вы можете добавить entry к опции страниц и обязательно включить template.

vue.config.js

module.exports = {
  pages: {
    app: {
      entry: 'client/src/main.js',
      template: 'client/public/index.html',
    },
  },
};

Если вам не нравится отдельный файл для этой конфигурации, вы также можете добавить его в package.json файл:

package.json

  "vue": {
    "pages": {
      "index": {
        "entry": "client/src/main.js",
        "template": "client/public/index.html"
      }
    }
  },
0 голосов
/ 16 октября 2018

На основании этого Github Issue я обнаружил, что пользовательскую точку входа можно передавать только в командной строке.Это верно как для build, так и для serve.См. Также в документации отдельный блок кода, демонстрирующий это.

Usage: vue-cli-service serve [options] [entry]

Я изменил свой скрипт на

    "serve:ui": "vue-cli-service serve client/src/main.js",

и теперь он может найти точку входа,

...