一、问题
今天刷leetcode的时候,发现有些函数老是重复书写,于是单独写了一个uitls.js模块,通过import的方式导入,没想到居然报错了。
二、解决方案
错误警告其实已经给出了解决方案,在package.json文件中设置"type": "module"
。
所以执行一下下面的命令,默认所有配置为‘y’,从而快速生成package.json,然后修改文件即可。
npm init -y
{
"name": "leetcode",
"version": "1.0.0",
"description": "",
"main": "107. 二叉树的层次遍历 II.js",
"type": "module",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
三、问题原因
node早先只支持CommonJS的模块化方案,所以ES6的模块化特性用不了。但是在Node V13.2.0之后开始实验性的支持ESM模块化,不过需要创建package.json文件指明type类型为module。
也就是, Node.js默认使用CommonJS规范, 统一使用require导入; 如果非要使用ES6 import方式, 需要在package.json添加"type":“module”, 整个当前环境只能选择一种规范, 不能混用!!!
原文链接:https://blog.csdn.net/sinat_36521655/article/details/109863364