11

我的应用分为 API 和 UI 部分。部署策略要求他们共享一个package.json. 文件结构看起来像

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

我正在使用标准的 vue-cli 脚本。

包.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 我的应用入口点在哪里?

4

3 回答 3

16

我发现基于这个Github 问题,您只能在命令行中传递自定义入口点。build对于和都是如此serve。另请参阅文档中的一个代码块来演示这一点。

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

我将脚本更改为

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

现在它可以找到入口点。

于 2018-10-16T18:31:40.097 回答
8

您可以添加entry页面选项,并确保您也包括在内template

vue.config.js

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

如果您不喜欢此配置的单独文件,也可以将其添加到package.json文件中:

包.json

  "vue": {
    "pages": {
      "index": {
        "entry": "client/src/main.js",
        "template": "client/public/index.html"
      }
    }
  },
于 2019-07-15T21:01:00.190 回答
-1

我相信您正在尝试运行正在构建一个以 vue 作为前端的 nodejs 应用程序。前段时间我遇到了一些类似的问题,我通过在项目中安装 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

于 2018-10-16T18:42:21.207 回答