zoukankan      html  css  js  c++  java
  • 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模块

    七.总结

    1. type字段的产生用于定义package.json文件和该文件所在目录根目录中.js文件和无拓展名文件的处理方式。值为'moduel'则当作es模块处理;值为'commonjs'则被当作commonJs模块处理
    2. 目前node默认的是如果pacakage.json没有定义type字段,则按照commonJs规范处理
    3. node官方建议包的开发者明确指定package.jsontype字段的值
    4. 无论package.json中的type字段为何值,.mjs的文件都按照es模块来处理,.cjs的文件都按照commonJs模块来处理
  • 相关阅读:
    大聊Python----SocketServer
    2、MySQL常见数据库引擎及比较?
    大聊Python----通过Socket实现简单的ssh客户端
    1、列举常见的关系型数据库和非关系型都有那些?
    uva12563 Jin Ge Jin Qu hao(01背包)
    UVA 12174 Shuffle(滑动窗口)
    C++中substr函数的用法
    uva11078
    11462 Age Sort(计数排序)
    UVA 11988 Broken Keyboard (a.k.a. Beiju Text) (链表,模拟)
  • 原文地址:https://www.cnblogs.com/zmztya/p/14419578.html
Copyright © 2011-2022 走看看