package.json中type的含义
一.创建项目文件
二.文件内容
a.js
import { num1, num2 } from "./b.js"; console.log(num1);
b.js
let num1 = 30; let num2 = 40; export { num1, num2 };
三.执行命令
node a.js
注意:报错 Cannot use import statement outside a module 意思是:不支持使用es6的import语法
四.如何解决
需要配置package.json中的内容,添加type属性
{ "type": "module", //添加了这一行代码 "name": "al01", "version": "1.0.0", "description": "", "main": "a.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" }
再次执行命令 node a.js 就可以运行了
五.分解学习
注意:
1/无扩展: 指的是不包含扩展名的文件路径,而不是说在创建的文件中删除文件的扩展名
(一):最近的package.json缺少"type" 字段 或者包含 "type":"commonjs"
则无扩展名的文件和.js结尾文件将被视为commonjs
若一直到根目录,还没有找到package.json,node.js则默认规则运行
(二)最近的package.json包含"type":"module"
则.js结尾的文件和无扩展的文件的导入语句都被视为ES6模块
import './startup.js'; //能识别
六.提升
不管type字段的值是多少, 以.mjs后缀名的文件总是被当作ES6模块,而以.cjs后缀名的文件总是被当成CommonJS模块
七.总结
type
字段的产生用于定义package.json
文件和该文件所在目录根目录中.js
文件和无拓展名文件的处理方式。值为'moduel'
则当作es模块处理;值为'commonjs'
则被当作commonJs模块处理- 目前node默认的是如果
pacakage.json
没有定义type
字段,则按照commonJs规范处理 - node官方建议包的开发者明确指定
package.json
中type
字段的值 - 无论
package.json
中的type
字段为何值,.mjs
的文件都按照es模块来处理,.cjs
的文件都按照commonJs模块来处理
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现