命令“npm run build”没有在 VueJS 项目上创建正确的构建

Posted

技术标签:

【中文标题】命令“npm run build”没有在 VueJS 项目上创建正确的构建【英文标题】:Command "npm run build" not creating the correctely build on VueJS project 【发布时间】:2020-05-01 18:52:30 【问题描述】:

我正在使用 Firebase 托管开发一个简单的 VueJS 应用程序。我在npm run build 之后使用firebase deploy 部署到网络。但是当部署完成时,网页与使用npm run serve 的本地构建不同。我无法理解它的原因,请帮助我,我是新手。

firebase.json


  "hosting": 
    "public": "dist",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      
        "source": "**",
        "destination": "/index.html"
      
    ]
  

项目结构

package.json


  "name": "quinta-app",
  "version": "0.1.0",
  "private": true,
  "scripts": 
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  ,
  "dependencies": 
    "core-js": "^3.4.4",
    "vue": "^2.6.10",
    "vue-router": "^3.1.4",
    "vuetify": "^2.2.3",
    "vuex": "^3.1.2"
  ,
  "devDependencies": 
    "@vue/cli-plugin-babel": "^4.1.0",
    "@vue/cli-plugin-eslint": "^4.1.0",
    "@vue/cli-service": "^4.1.0",
    "babel-eslint": "^10.0.3",
    "eslint": "^5.16.0",
    "eslint-plugin-vue": "^5.0.0",
    "sass": "^1.19.0",
    "sass-loader": "^8.0.0",
    "vue-cli-plugin-vuetify": "^2.0.3",
    "vue-template-compiler": "^2.6.10",
    "vuetify-loader": "^1.3.0"
  ,
  "eslintConfig": 
    "root": true,
    "env": 
      "node": true
    ,
    "extends": [
      "plugin:vue/essential",
      "eslint:recommended"
    ],
    "rules": 
      "no-unused-vars": "off",
      "no-console": "off"
    ,
    "parserOptions": 
      "parser": "babel-eslint"
    
  ,
  "browserslist": [
    "> 1%",
    "last 2 versions"
  ]

vue.config.js

module.exports = 
  "transpileDependencies": [
    "vuetify"
  ]

App.vue

<template>
  <v-app>
    <router-view v-if="isLoggedIn"></router-view>
    <login v-else />
  </v-app>
</template>

<script>
import login from "@/views/Login"

export default 
  name: "App",
  components: 
    login
  ,
  data: () => (
    isLoggedIn: false
  )
;
</script>

<style>
</style>

路由器/index.js

import Login from '@/views/Login'
import Home from '@/views/Home'
import VueRouter from 'vue-router'
import Vue from 'vue'

Vue.use(VueRouter)

const routes = [
    
        path: '/',
        name: 'Home',
        component: Home
    ,
    
        path: '/login',
        name: 'Login',
        component: Login
    
]

export default new VueRouter( 
    mode: 'history',
    routes 
)

【问题讨论】:

你能把你的 package.json 也放在这里吗? 编辑@Raymond But when deploy is finished the web page is different from local build -- 这不清楚。它们具体有什么不同? 【参考方案1】:

我认为这与publicPath 的项目配置有关,默认为'/', 可以看文档:Configuration Reference | Vue CLI

【讨论】:

哦,是的,如果我输入路径,我可以浏览到正确的页面。但是我的逻辑无法改变,我已经用我的 App.vue 编辑了这个问题 因为你选择 vue-router history 模式,它应该和你的服务器代理一起工作:the official solution【参考方案2】:

从package.json中可以看到

npm run serve:它正在运行vue-cli-service serve,它启动了一个开发服务器。

https://cli.vuejs.org/guide/cli-service.html#vue-cli-service-serve

npm run build:它正在运行vue-cli-service build,它会生成一个生产就绪包。

https://cli.vuejs.org/guide/cli-service.html#vue-cli-service-build

您可能在开发和生产中有不同的设置并导致页面差异。

【讨论】:

那么,我在哪里设置的呢?

以上是关于命令“npm run build”没有在 VueJS 项目上创建正确的构建的主要内容,如果未能解决你的问题,请参考以下文章

npm run build 打包后,如何运行在本地查看效果

vue-cli3项目npm run build --report不生成分析图

vue 关于npm run build 的小问题

vue 关于npm run build 的小问题

npm run build 打包命令报错,npm i -g npm 后使用任何跟npm相关的命令都报错 的解决方案

命令“npm run build -- --prod”退出并出现代码 1 错误