文章目录

  • 问题
  • 解决方案
  • 原因
  • 参考

问题

最近在写JavaScript时,写了一个工具类,多个地方要用到,通过模块化导入,在node环境运行会报错:

SyntaxError: Cannot use import statement outside a module

解决方案

在警告信息Warning的提示下,需要在 package.json设置"type": "module",通过执行命令npm init -y会自动生成 package.json文件,如下:

{"name": "web","version": "0.0.1","keywords": [],"license": "ISC","author": "","scripts": {"build": "parcel build index.html","dev": "parcel index.html --open","start": "npm run build && npm run dev","test": "echo \"Error: no test specified\" && exit 1"},"devDependencies": {"parcel-bundler": "^1.12.4"},"main": "index.js",// 重点"type": "module"
}

生成文件后,并没有达到效果,还会报错:

意思是说export模块需要声明default,如单独导出一个变量:

export const a = 2

需要改成如下:

const a = 2
export default a

另外improt导入模块时,需要设置全路径,包括文件后缀也要加上,不然会报ERR_MODULE_NOT_FOUND错:

// 正确
import a from "./index.js"// 错误
import a from "./index"

原因

CommonJS作为Node.js 的规范,一直沿用至今,现在很多类库还在用CommonJS ,而ES6的import/export出现相对晚很多,在Node13以上环境为了兼容ES6的特性,就需要创建package.json文件指明type类型为module。

参考

  • https://cnodejs.org/topic/5e4be9ad1225c9423dcda5b9
  • https://www.zhihu.com/question/56820346
  • https://bobbyhadz.com/blog/javascript-requested-module-not-provide-export-named-default

解决node环境下SyntaxError: Cannot use import statement outside a module的问题相关推荐

  1. Uncaught SyntaxError: Cannot use import statement outside a module的解决方法

    本地html文件中的script标签引入ES6的模块,直接在浏览器中打开该html文件,发现报错了:Uncaught SyntaxError: Cannot use import statement ...

  2. Uncaught SyntaxError: Cannot use import statement outside a module

    1.错误描述 Uncaught SyntaxError: Cannot use import statement outside a module 2.错误原因 定义了一个JavaScript文件,声 ...

  3. 2021/06/27 Uncaught SyntaxError: Cannot use import statement outside a module

    js中es6的语法并不能被浏览器所识别 ! [Deprecation] CSS cannot be loaded from `file:` URLs unless they end in a `.cs ...

  4. 浅谈node环境下的Sass以及gulp工具下的Sass

    目录 一.Sass简介 二.Sass的解析器 1. node环境下的Sass解析器 2. gulp工具下的Sass解析器 三.Sass语法 1. 注释 2. 变量 3.嵌套 4.导入@import 5 ...

  5. 项目总结10:通过反射解决springboot环境下从redis取缓存进行转换时出现ClassCastException异常问题...

    通过反射解决springboot环境下从redis取缓存进行转换时出现ClassCastException异常问题 关键字 springboot热部署  ClassCastException异常 反射 ...

  6. 电脑访问不了虚拟机ftp服务器,解决win环境下访问本机虚拟机中centos7 ftp服务器的问题...

    inux搭建ftp服务器 1.安装软件: yum install vsftpd 2.修改配置文件vsftpd.conf: vim /etc/vsftpd/vsftpd.conf 把anonymous_ ...

  7. 解决nodejs环境下端口号被占用的方法

    解决nodejs环境下端口号被占用的方法 参考文章: (1)解决nodejs环境下端口号被占用的方法 (2)https://www.cnblogs.com/guoliangstar/p/1014930 ...

  8. 解决Linux环境下Tomcat启动卡住问题

    解决Linux环境下Tomcat启动卡住问题 参考文章: (1)解决Linux环境下Tomcat启动卡住问题 (2)https://www.cnblogs.com/0xcafedaddy/p/7193 ...

  9. 成功解决Windows10环境下运行Linux系统下的.sh文件

    成功解决Windows10环境下运行Linux系统下的.sh文件 目录 解决问题 解决方法 解决问题 Windows10环境下运行Linux系统下的.sh文件 解决方法 .sh是shell scrip ...

  10. 解决Windows环境下Git Bash 不能输入中文的问题

    解决Windows环境下Git Bash 不能输入中文的问题 打开Git Bash后,对窗口右键->Options->Text->Locale改为zh_CN,Character se ...

最新文章

  1. 如何完全卸载VS2010
  2. 异步编程的 async/await
  3. ubuntu 下 github 使用方法 以及异常修改
  4. 转:ffmpeg编码h264
  5. 屏幕录像专家 V2013 + 注册机(屏幕录像)
  6. TCP的request_sock与sock
  7. 实战案例:抽屉自动点赞与爬取汽车之家新闻
  8. 浏览器关闭垃圾的百度热点推荐------简洁就是美
  9. 苹果手机桌面找不到计算机,苹果手机设置图标不见了怎么办
  10. 三亚三姐,三亚海鲜的代言人
  11. 使用keil5中的RL_TCPNet中间件建立一个工程
  12. 永中word页码怎么从第二页开始_word转pdf软件有哪些?word转pdf软件怎么操作?
  13. 告别windows、拥抱linux,ThinkPad E485安装XUbuntu实录
  14. GDAL python教程基础篇(4)OGR拷贝方法
  15. Windows Server Core 2022 (一)安装
  16. 微软e5服务器,微软发布Office 365 E5计划
  17. 取消Pytorch警告
  18. 【Virus Analysis】插入Unicode控制字符-RLO
  19. 【MySQL】MySQL统计连续登录3天的用户
  20. SEO:百度和Google搜索优化区别

热门文章

  1. 前缀、中缀、后缀(逆波兰)表达式以及逆波兰表达式实现简单计算器
  2. 社交软件红包技术解密(十):手Q客户端针对2020年春节红包的技术实践
  3. RocketMQ消息存储学习
  4. Arduino基础入门篇(认识开发板和面包板)
  5. 简单创意的思维导图怎么画
  6. 16个最新创意品牌Logo设计 —— “形神”兼具的设计,方显高级和质感
  7. sun.misc.BASE64Encoder是内部专用 API, 可能会在未来发行版中删除
  8. 读名老中医之路笔记(三)
  9. 正睿OIday4总结
  10. ECUG Con 2018 早鸟票热卖中 | 大咖聚首 探索云计算下一个十年