关于区别
以引入path模块为例:
import path from 'node:path';
和 import * as path from "path"
:
- 都可以在 Node.js 中用于导入
path
模块 import path from 'node:path'
: 明确指明引入node.js
内置的path模块。
实际上根据Node.js 的模块解析规则,本来就会优先会加载node的核心模块。笔者认为大多数场景两者效果上无区别,但它改变了加载规则,只仅仅从核心模块里去查找。例如新版本node在核心模块如果增加了新模块,低版本node使用node:
加载此模块,不会导致去别的位置查找(如果加载错了同名文件可能导致问题)。
其他相关:esbuild项目引入依赖的报错问题
esbuild配置中的platform默认是"browser",表示编译的目标平台为浏览器环境而非node环境。 这样引入某些依赖包,如果依赖包里有类似"node:xxx"的代码,自然就会报错了。