zoukankan      html  css  js  c++  java
  • You are using the runtime-only build

    场景

    vue 版本 2.3.0

    早上起来新建个项目写单测的时候发现报出一个错误

    console.error node_modules/vue/dist/vue.runtime.common.js:572
        [Vue warn]: 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.
    
        (found in <Root>)
    

    runtime-only ? 这是什么情况,我只是在单测代码里构建了一个 vm 对象啊,写入了

    import Vue from 'vue';
    
    let vm = new Vue({
        template: `
            <p>{{ text }}</p>
        `,
        data () {
            return {
                text: 'hello world'
            }l
        }
    }).$mount(null);
    
    // ...
    

    接着是 npm run unit 启动的

    "scripts": {
      "unit": "jest test/unit/specs --coverage"
    }
    

    解决方案

    查了查资料得知 vue2 分为完整构建(包含独立构建和运行时构建) 和 运行时构建两种模式。

    简单来说, 完整构建和运行时构建的区别就是:可不可以用template选项。运行时构建少了编译 template 为 render 函数的一个阶段所以代码小一些。

    上段代码中由于 vm 使用了 template 所以需要完整构建,我找了找 vue 的 npm package 的 main 入口用的是 vue.runtime.common.js,这个是运行时构建,于是乎报错。

    只要修改单测代码中的一句话,引用完整构建的 vue 函数就行了

    import Vue from 'vue/dist/vue.min.js';
    
    // ...
    

    思考

    那么问题来了,我们平常写项目代码的时候是直接使用 import Vue from 'vue' 的,为何不是使用完整构建呢?

    那是因为 webpack 中的 vue-loader 已经提前把你的 vue 文件中的 template 给编译成了 render 函数。

    附上 vue2 dist目录下的文件

    • vue.common.js 基于 CommonJS 的完整构建
    • vue.esm.js 基于 ES Module 的完整构建
    • vue.js 基于 UMD 的完整构建,可以用 cdn 直接引入
    • vue.min.js 和 vue.js 一样, 属于压缩后版本
    • vue.runtime.common.js 基于 CommonJS 的运行时构建
    • vue.runtime.esm.js 基于 ES Module 的运行时构建
    • vue.runtime.js 基于 UMD 的运行时构建,可以用 cdn 直接引入
    • vue.runtime.min.js 和 vue.runtime.js 一样, 属于压缩后版本

    如果想变动使用的 vue 文件,除了在 import 的时候写上具体路径外,还可以使用 webpack 别名

    {
        resolve: {
            alias: {
                'vue$': 'vue.esm.js'
            }
        }
    }
    
  • 相关阅读:
    最长公共前缀
    无重复字符的最长子串
    文章采集代码
    网络验证常见的攻击方式与防御手段
    初创公司如何避免服务器被攻击
    拒绝ssh远程暴力破解
    我公司开了7年,靠的就是这套顶级销售打法撑下来!
    顶级销售的十个习惯,轻松签下百万千万合同!(值得背下来)
    顶级销售高手总结的 9 个方面
    一位顶级销售高手总结的“销售心得”!
  • 原文地址:https://www.cnblogs.com/everlose/p/12564840.html
Copyright © 2011-2022 走看看