vue项目查看vue版本及cli版本的实现方式


Posted in Javascript onOctober 24, 2020

查看cli版本,执行如下:

vue -V

查看vue版本

npm list vue

补充知识:vue老项目升级vue-cli3.0问题总结

升级步骤

1、 删除原vue-cli并安装vue-cli3.0

2、删除新项目中src下的内容,把原项目中src目录覆盖到新项目中

3、把router从目录文件夹改为文件,src/router/index.js提高一层变成src/router.js

4、 我的项目中src已经分为了views和components所以无需修改,如果不是这个结构需要自己区分下

5、将原项目的index.html及favicon.ico覆盖到新项目的public中

6、 将原项目的static文件夹拷贝到新项目的public中

7、 修改package.json文件,保持和原有项目一致即可

8、 创建并配置vue.config.js文件

删除命令:

npm uninstall vue-cli -g

安装@vue/cli命令:

npm install -g @vue/cli

我在这里省略安装流程,掘金上已经有很多文章了,下面说下会遇到的问题:

1、找不到vue文件

CMD中的报错

These dependencies were not found:

* @/views/index/index in ./src/router.js

* @/views/index/otherIndex in ./src/router.js

To install them, you can run: npm install --save @/views/index/index @/views/index/other

页面上的报错

./src/router.js
Module not found:
Error: Can't resolve '@/views/index/index' in 'D:\VUE\haigui-proxy\src'
这种报错是说明文件路径错误没有找到文件,因为在原项目中设置了“@”也就是alias(别名),也有可能在原项目中设置了extensions(可以省略扩展名),所以需要在新项目的vue.config.js中设置如下内容:
const path = require('path'); // vue.config.js顶部
const resolve = (dir) => path.join(__dirname, dir);
module.exports = {
 configureWebpack: config => {
 Object.assign(config, {
  resolve: {
  extensions: ['.js', '.vue', '.json'], // 可以省略后缀名
  alias: { // 别名,在require的时候,可以使用这些别名,来缩短路径的长度
   '@': path.resolve(__dirname, './src'),
   '@c': path.resolve(__dirname, './src/components')
  }
  }
 });
 }
}

2、找不到image图片

Module not found:

Error: Can't resolve '../../../static/image/avatar_gray.jpg' in 'D:\VUE\haigui-proxy\src\views\index'

当把原项目的src和static拷贝到新项目后,就会出现图片路径不对的问题,网上很多有关vue-cli3.0配置的文章都说的是把原项目的static直接拷贝到新项目的public中,其实这是不对,官方给出的原因是:

任何放置在 public 文件夹的静态资源都会被简单的复制,而不经过 webpack。需要通过绝对路径来引用它们。

例如,目录为public/static/image,image里面存放各种图片:

引入图片logo.png:

<img src="/static/image/logo.png" >

在 css 中 设置背景图片:

.bg {
background: url('/satic/image/bg.jpg');
}

注意:

public 目录提供的是一个应急手段,当你通过绝对路径引用它时,留意应用将会部署到哪里。如果你的应用没有部署在域名的根部,那么你需要为你的 URL 配置 publicPath 前缀。

何时使用 public 文件夹

你需要在构建输出中指定一个文件的名字。

你有上千个图片,需要动态引用它们的路径。

有些库可能和 webpack 不兼容,这时你除了将其用一个独立的 标签引入没有别的选择。

通过 webpack 的处理好处:

脚本和样式表会被压缩且打包在一起,从而避免额外的网络请求。

文件丢失会直接在编译时报错,而不是到了用户端才产生 404 错误。

最终生成的文件名包含了内容哈希,因此你不必担心浏览器会缓存它们的老版本。

public 目录提供的是一个应急手段,当你通过绝对路径引用它时,留意应用将会部署到哪里。

assets文件夹就是用来放置经过webpack处理的资源的

需要使用相对路径引入:

<!-- 具体根据目录结构来 -->

<img src="../assets/images/logo-black.png">

img动态路径:

<img :src="imgurl">
data () {
return { 
imgurl: require("../assets/images/gou.png") 
}
}

css 背景图:

.login-wrapper {
 background: url('../../assets/images/bg.jpg');
}

参考:官方解释

3、scss全局变量的配置

Module build failed (from ./node_modules/sass-loader/lib/loader.js):
Undefined variable. 955 │ 
 border-right: 1px solid $borderColor;  
  ^^^^^^^^^^^^
root stylesheet in D:\VUE\haigui-proxy\src\views\index\index.vue (line 955, column 33)

若原项目中使用了scss并且使用了全局变量,需要在vue.config.js中重新配置,并把全局变量文件放到src/assets/css目录下。

在原项目中需要在build/utils.js中进行配置

scss: generateLoaders('sass').concat(
 {
 loader: 'sass-resources-loader',
 options: {
  resources: path.resolve(__dirname, '../src/assets/css/haigui-variable.scss')
 }
 }
)

新项目中就简单的多,直接编辑vue.config.js,加入一节内容即可:

css: {
 loaderOptions: {
 sass: {
  // @/ 是 src/ 的别名 ~是必须有要加的
  data: '@import "~@/assets/css/haigui-variable";'
  // 如果没有设置别名可以这么写
  // data: '@import "./src/assets/css/haigui-variable";'
 }
 }
}

4、runtime-only

You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build.

原因:

vue有两种形式的代码 compiler(模板)模式和runtime模式(运行时),vue模块的package.json的main字段默认为runtime模式, 指向了"dist/vue.runtime.common.js"位置。

这是vue升级到2.0之后就有的特点。

而在main.js文件中,初始化vue却是这么写的,这种形式为compiler模式的,所以就会出现上面的错误信息。

new Vue({
 el: '#app',
 router,
 store,
 components: { App },
 template: '<App/>'
});

解决办法:

方法一:

将main.js中的代码修改如下就可以

new Vue({
 router,
 store,
 render: h => h(App)
}).$mount('#app')

到这里我们的问题还没完,那为什么之前是没问题的,之前vue版本也是2.x的呀?

这也是第二种解决办法:

因为之前我们的webpack配置文件里有个别名配置,具体如下

resolve: {
 alias: {
  'vue$': 'vue/dist/vue.esm.js' //内部为正则表达式 vue结尾的
 }
}

也就是说,import Vue from ‘vue' 这行代码被解析为 import Vue from ‘vue/dist/vue.esm.js',直接指定了文件的位置,没有使用main字段默认的文件位置。

所以第二种解决方法就是,在vue.config.js文件里加上webpack的如下配置即可,

configureWebpack: {
 resolve: {
 alias: {
  'vue$': 'vue/dist/vue.esm.js' 
 }
 }
}

既然到了这里就会想到第三中解决方法,那就是在引用vue时,直接写成如下即可

import Vue from 'vue/dist/vue.esm.js'

以上这篇vue项目查看vue版本及cli版本的实现方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript英文日期(有时间)选择器
May 02 Javascript
checkbox 多选框 联动实现代码
Oct 22 Javascript
用js判断页面是否加载完成实现代码
Dec 11 Javascript
jQuery内置的AJAX功能和JSON的使用实例
Jul 27 Javascript
JavaScript调用客户端Java程序的方法
Jul 27 Javascript
jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结
Jul 07 Javascript
详解js的事件处理函数和动态创建html标记方法
Dec 16 Javascript
jQuery实现所有验证通过方可提交的表单验证
Nov 21 jQuery
mockjs,json-server一起搭建前端通用的数据模拟框架教程
Dec 18 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
Dec 25 jQuery
基于$.ajax()方法从服务器获取json数据的几种方式总结
Jan 31 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
Nov 19 Javascript
Ant Design的Table组件去除
Oct 24 #Javascript
Ant design vue table 单击行选中 勾选checkbox教程
Oct 24 #Javascript
Antd的Table组件嵌套Table以及选择框联动操作
Oct 24 #Javascript
解决Antd 里面的select 选择框联动触发的问题
Oct 24 #Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
Oct 24 #Javascript
jquery插件懒加载的示例
Oct 24 #jQuery
在react-antd中弹出层form内容传递给父组件的操作
Oct 24 #Javascript
You might like
【星际争霸1】人族1v7家ZBath
2020/03/04 星际争霸
Thinkphp的volist标签嵌套循环使用教程
2014/07/08 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
2016/11/04 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
2019/05/23 PHP
js压缩利器
2007/02/20 Javascript
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
2009/11/30 Javascript
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
2010/06/19 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
js运动应用实例解析
2015/12/28 Javascript
ES6所改良的javascript“缺陷”问题
2016/08/23 Javascript
JavaScript实现图片轮播组件代码示例
2016/11/22 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
2018/09/18 Javascript
浅析js实现网页截图的两种方式
2019/11/01 Javascript
[03:17]DOTA2-DPC中国联赛1月29日Recap集锦
2021/03/11 DOTA
详解Django通用视图中的函数包装
2015/07/21 Python
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
python学习基础之循环import及import过程
2018/04/22 Python
python爬虫_实现校园网自动重连脚本的教程
2018/04/22 Python
Windows下python3.7安装教程
2018/07/31 Python
关于pytorch中网络loss传播和参数更新的理解
2019/08/20 Python
Python装饰器结合递归原理解析
2020/07/02 Python
Python爬虫教程之利用正则表达式匹配网页内容
2020/12/08 Python
西班牙英格列斯百货官网:El Corte Inglés
2016/09/25 全球购物
HEMA法国:荷兰原创设计
2019/02/21 全球购物
英国工作场所设备购买网站:Slingsby
2019/05/03 全球购物
Paradox London官方网站:英国新娘鞋婚礼鞋品牌
2019/08/29 全球购物
英国玛莎百货澳大利亚:Marks & Spencer Australia
2019/08/30 全球购物
高中生学习的自我评价
2013/12/14 职场文书
学生拾金不昧表扬信
2014/01/21 职场文书
家长对孩子评语
2014/01/30 职场文书
学雷锋树新风演讲稿
2014/05/10 职场文书
高职教师先进事迹材料
2014/08/24 职场文书