module.exports、exports、export default、export、require、import

2023-11-01

在es5中,用 module.exports 和 exports 导出模块,用 require 导入模块。

在es6中,新增 export default 和 export 导出模块,用 import 导入模块。

一般的,module.exports 和 exports 与 require 对应。export default 和 export 与 import 对应。

也就是说,用 module.exports 和 exports 导出的模块,用 require 导入;用 export default 和 export 导出的模块,用 import 导入。

当然,这也不是绝对的。如果开发环境支持es6语法,用es5的 module.exports 和 exports 导出的模块,可以使用es6的 import 导入;用es6的 export default 和 export 导出的模块,可以使用 es5 的 require 导入。

注意:Node.js中未实现对es6中 export default 和 export 这两个关键字的支持。 

原因:Node.js是CommonJS规范的实现,CommonJS规范使用require引入模块,使用module.exports导出模块

而 import 和 export (包括 export default 和 export)是es6的新特性,CommonJS模块规范和ES6模块规范完全是两种不同的概念。

本机node版本为 v10.6.0

我们可以来测试一下, import 在Node.js环境中的运行情况,新建index.js文件,输入如下代码,运行node index.js命令:

import fs from 'fs'
console.log(fs)

报错如下:语法错误:意外的标识符

(function (exports, require, module, __filename, __dirname) { import fs from 'fs'
                                                                     ^^
SyntaxError: Unexpected identifier

同理:测试 export 在Node.js环境中的运行情况:

export const a = 'ceshi'
console.log(a)

报错如下:语法错误:意外的关键字export

(function (exports, require, module, __filename, __dirname) { export const a = 'ceshi'
                                                              ^^^^^^
SyntaxError: Unexpected token export

那么,如何让 export 和 import 这两个es6新特性能在Node.js环境中使用呢?

噔噔噔噔~~~ 可以使用Babel代码编译库来解决哈!

初始化 package.json 配置文件

npm init

安装 Babel 插件

npm i babel-cli babel-preset-env -D

新建 .babelrc 配置文件,建在项目根目录哈

{
    "presets": [
        [
            "env",
            {
                "targets": {
                    "node": "current"
                }
            }
        ]
    ]
}

配置启动命令,在 package.json 配置文件中添加dev命令

"scripts": {
    "dev": "babel-node index"
}

 执行命令,这样就不会报错啦!

npm run dev

注意:若想在命令行直接运行命令 babel-node index 会报错的,这种情况下需将babel-cli插件安装到全局,才能使用babel-node命令。

npm install babel-cli -g

扩展:nodemon监测项目文件变化

nodemon会监测项目中所有的文件,一旦发现文件有改动,nodemon会自动重启应用。

安装 nodemon 插件

npm i nodemon -D

修改dev命令

"scripts": {
    "dev": "nodemon -w index.js --exec \"babel-node index.js --presets env\""
}

 使用 nodemon 监控 index.js文件 的变化,发生变化时来执行 babel-node命令 编译 index.js文件。

与君共勉:再牛逼的梦想,也抵不住傻逼般的坚持!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

module.exports、exports、export default、export、require、import 的相关文章

  • python利用pyhive 连接hive

    1 下载需求包 pip install sasl pip install thrift pip install thrift sasl pip install PyHive 2 连接hive 注意端口默认为10000 from pyhive
  • Python 单分配泛函数

    单分配泛函数 通俗一点的说法就是 根据函数传入的第一个参数的数据类型的不同 而执行不同的方法 单分派 根据一个参数的类型 以不同方式执行相同的操作的行为 多分派 可根据多个参数的类型选择专门的函数的行为 泛函数 多个函数绑在一起组合成一个泛
  • 融合注意力机制和Bi-LSTM的旅游评价情感分析模型

    摘要 旅游评价情感分析对了解游客偏好具有重要意义 然而现有的旅游评价情感分析模型较少突出游客情感描述的核心内容 为了更加精确地分析游客评价的情感倾向 提出一种结合词性注意力机制和双向长短期记忆神经网络 Bi directional Long
  • pd.MultiIndex() 报错 TypeError: __new__() got an unexpected keyword argument ‘labels‘

    pd MultiIndex 报错 TypeError new got an unexpected keyword argument labels coefficients list coeff labels lr l1 l2 coeff m
  • angularJS+requireJS实现controller及directive的按需加载

    最近因为项目的比较大 需要加载的js文件较多 为了提高首屏页面的加载速度 需要对js文件进行按需加载 然后网上参考了一些资料 自己也深入研究一番之后 实现了按需加载控制器js文件及指令js文件的效果 思路如下 1 借助ui router里面
  • 删除服务器上的日志文件,服务器删除文件日志

    服务器删除文件日志 内容精选 换一换 Manager的审计日志默认保存在数据库中 如果长期保留可能引起数据目录的磁盘空间不足问题 管理员如果需要将审计日志保存到其他归档服务器 可以在FusionInsight Manager设置转储参数及时
  • 脑电EEG的几种蒙太奇

    EEG设备电极使用的几种蒙太奇 顺序蒙太奇 Sequential Montage 每个通道测量的是两个电极之间的差分电压 即差分输入 参考蒙太奇 Referential Montage 每个通道测量的是一个电极与一个指定参考电极之间的电压差
  • JSP out.write()方法具有什么功能呢?

    转自 JSP out write 方法具有什么功能呢 下文讲述out对象中write 方法的功能简介说明 如下所示 out write 方法的功能 用于输出字符串 注意事项 out write 方法只能输出字符 当放入的信息是数字时 会转换
  • jwt的基本使用

    文章目录 介绍 用途 解决跨域访问的问题 原理 JWT 的数据结构 JWT基本使用 介绍 JWT是json web token缩写 它将用户信息加密到token里 服务器不保存任何用户信息 服务器通过使用保存的密钥验证token的正确性 只
  • 什么?居然有人把图片从 1M 优化到 1024kb

    前两天刷知乎热搜看到一篇帖子 某省会城市健康码连续两次崩溃 相关公司在之前的报道中还声称 用两天两夜 将 1M 图片优化到 100kb 报道中提到 为了确保系统运行更高效 他们将一张图片从 1MB 压缩到 500 KB 再从 500KB 优
  • springboot html vue.js 前后分离代码示例

    1 html table class table table hover thead tr th style width 50px div class checkbox d inline div th tr thead table
  • 揭晓eval(function(p,a,c,k,e,r)js代码解密加密程序

    最近大雄搜集站 在弄改一个wp网站侧边栏的小工具就发现了 JS的代码脚本很乱 不是常规写法 后来查阅发现是由于JS加密造成的 我对这种事情很不理解 有一些既然是选择开源了 为啥JS还加密 走你 那就一起一波骚操作解密它 首先如果你发现你的J

随机推荐

  • 解决:Java source1.5不支持diamond运算符

    diamond运算符 指的是JDK1 7的一个新特性而Maven默认用的是JDK1 5去编译 对于这个问题 这里提供以下两种方案 1 在项目的pom xml中加入以下的配置 这种方法只只对当前的模块或者项目
  • 编码报错:‘gbk‘ codec can‘t decode byte 0xb5

    编解码问题 gbk codec can t decode byte 0xb5 今天抓取数据时 对抓取的数据进行处理时发现是乱码 如图所示 使用gbk和utf 8对其进行编解码 发现还是有问题 后来去查阅了相关资料 发现是编解码的问题 gbk
  • CSS——背景(background)和列表(list-style)

    背景 background attachment图片滚动条滚动 div width 300px height 2000px background image url img a31c4997d0d261be5329cf402f6b7ec1
  • 异常数据剔除

    1 在SPSS中做箱型图 图中可以显示异常值 然后剔除 但问题是大数据 采用箱形图已经不显示了 2 拉依达准则法 3 简单 无需查表 测量次数较多或要求不高时用 是最常用的异常值判定与剔除准则 但当测量次数 10次时 该准则失效 如果实验数
  • conda安装opencv

    conda install chttps conda binstar org menpo opencv
  • Cef经典N大问题

    1 cef启动 退出的时候怎么崩溃了 答 如果是启动时崩溃 请看资源目录是否文件都齐全 退出的话见https github com fanfeilong cefutil blob master doc CEF Close md 如果是cen
  • mysql和m_MySQL-----(M-S,和,M-M)

    实验项目 一主多备 双主双备 一 一主多备 1 需要至少两台MySQL 一台主 一台备 在主备上创建数据库 mysql uroot p123 create databse HA use HA create table T1 id int n
  • 详解:字符转换函数(大写转小写,小写转大写)

    对于我们在刚刚学习C语言的时候的练习题 不知道大家还能记得多少 多组输入 输入一个英文字符 判断 如果是大写 则输出小写 如果是小写 则输出大写 这个题目 其实在刚刚开始学习的时候 为难了笔者老久都没有攻克 主要还是在于 回车键没有抵消 所
  • 使用OpenAPIKey来调用ChatGPT并解决生成回答控制台显示不全的问题

    使用OpenAPIKey来调用ChatGPT并解决生成回答控制台显示不全的问题 Code import os import openai import re def get ai response prompt engine text da
  • react-lazyload懒加载控件源码解析

    简介 本篇文章主要介绍一个优秀的基于react实现的懒加载控件 github com twobin reac 优点 易于使用 比如
  • 基于机器学习的心脏成像诊断

    心脏成像在心血管疾病 CVD 的诊断中起着重要作用 但到目前为止 它的作用仅限于对心脏结构和功能的观察和定量评估 然而 随着大数据和机器学习的出现 人工智能方法的出现将直接帮助临床医生诊断CVD 本文全面回顾了这一领域的最新研究成果 并为读
  • js数组去重常用方法

    js数组去重是面试中经常会碰到的问题 无论是前端还是node js数组常见的有两种形式 一种是数组各元素均为基本数据类型 常见的为数组字符串格式 形如 a b c 一种是数组各元素不定 元素中既有基本数据类型 也有引用数据类型 形式如 na
  • 某书最新版X-s(2023/5/23更新)

    前不久刚写过xhs的x s 前几天听一些小伙伴说又更新了 我二话不说还按原先的逆向思路 直接搜function sign 开始施展补环境大法 一顿无用的折腾 补完后 测试发现死活不成功 这真是离了大谱了 对比了一下 通过补环境 sign生成
  • 【linux】【tar】tar命令详解之czvf,xzvf

    Linux tar 英文全拼 tape archive 命令主要用于文件的打包压缩及解压 命令最初的设计目的是为了将文件备份到磁带上 tapearchive 因而得名tar 1 常用tar命令实例 打包命令 tar czvf xxx 说明
  • 代码布局优化

    代码布局优化是编译技术中的一种策略 其目的是调整程序中函数和数据的物理布局 以提高程序的执行速度 更好的代码布局能够有效利用现代处理器的特性 例如指令缓存和分支预测 从而提高性能 以下是代码布局优化的几个关键方面 指令缓存效率 当处理器执行
  • linux系统支持ntfs吗,Linux支持NTFS格式文件的方法

    一般情况下Linux系统是不支持NTFS文件系统的 所以我们不能在Linux系统中挂载NTFS文件系统类型的硬盘或移动硬盘 那么我们如何才能让Linux系统支持NTFS文件系统呢 现在我们去看看Linux支持NTFS格式文件的方法介绍 Li
  • VS 2022(Visual Studio 2022)菜单栏中增加文件-高级保存选项

    背景 最近想使用VS工具来开发Qt项目 但运行后发现程序运行中文会显示乱码 在网上找了相关资料后需要使用高级保存选项来更改文件编码为UTF 8类型 但VS2022貌似没有高级保存选项 摸索一番后发现添加该选项的方法 故而分享一下 参考连接
  • iwebsec靶场 文件包含漏洞通关笔记8-php://input伪协议利用

    目录 前言 1 php input伪协议原理 2 php input伪协议使用条件 第08关 php input伪协议利用 1 打开靶场 2 源码分析 3 伪协议渗透获取php信息 1 构造post信息 2 渗透 4 伪协议获取目录信息 1
  • 基础指针【指针的基本使用方法和注意事项】

    基础指针目录 前言 指针 指针是什么 指针的大小 指针的定义和赋值 指针的使用 传值调用和传址调用 传值调用 传址调用 指针的弊端 野指针 使用指针的注意事项 前言 指针 是我们在学习C语言中的一个重难点 关乎到我们学习C语言的深度和理解
  • module.exports、exports、export default、export、require、import

    在es5中 用 module exports 和 exports 导出模块 用 require 导入模块 在es6中 新增 export default 和 export 导出模块 用 import 导入模块 一般的 module expo