zoukankan      html  css  js  c++  java
  • require后面不加default会报错

    在项目中用 require('./Download.vue') 引入一个组件的时缺少.default 会报错:

    Failed to mount component: template or render function not defined

    <template>
      <div id="app">
        <Download />
      </div>
    </template>
    <script type="application/JavaScript">
       let Download = require('./Download.vue').default
    
    export default {
      name: 'app',
      components: {
        Download
      }
    }
    </script>

    而有的时候不加.default也不会报错,这是怎么回事呢

    babel可以把 import/export 转成node 的 module.exports/ require 。

    但是Babel@6不再export default 的module.exports了。

    如果一个模块中仅仅export default, 那么就不用加.default了。如果除此之外还有别的对象被 export 出来,那不好意思,只能老老实实写default 了。

    广州vi设计公司 http://www.maiqicn.com 我的007办公资源网 https://www.wode007.com

    解决方法:

    'use strict';
    Object.defineProperty(exports, "__esModule", {
      value: true
    });
    exports.default = 'foo';
    module.exports = exports['default'];
    
    // 调用时
    require('./bundle.js') // foo
     

    二,补充的知识点

    首先 webpack 支持 Commonjs、AMD 和 ES6模块打包。当我们用 .vue 单文件写组件时,在 script 标签内使用的是 ES6 的语法且使用 export default 进行默认导出。然而,require 是 CommonJS 的模块导入方式,不支持模块的默认导出,因此导入的结果其实是一个含 default 属性的对象,因此需要使用 .default 来获取实际的组件,当然我们也可以使用 ES6 的 import 语句,如果使用 import,需要给定一个变量名,所有 import 语句必须统一放在模块的开头。相反,如果 .vue 文件中使用 CommonJS 或 AMD 模块化语法,使用 module.exports 对象进行导出,那么使用 require 导入时就不需要使用 .default 来获取。

  • 相关阅读:
    oracle的over函数应用(转载)
    Oracle decode()函数应用
    EL表达式显示数据取整问题
    null值与空值比较
    case when语句的应用
    堆排序
    希尔排序
    插入排序
    异或运算
    选择排序
  • 原文地址:https://www.cnblogs.com/xiaonian8/p/13685424.html
Copyright © 2011-2022 走看看