<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<!-- <script src="https://unpkg.com/immer"></script> -->
<script src="https://cdn.jsdelivr.net/npm/immer"></script>
</head>
<body></body>
</html>
官方文档 https://immerjs.github.io/immer/zh-CN/installation/ 提供了 直接引入js的方式
直接使用上面的两种script引入的方式会报错.
为啥会导入 cjs版本的? 不能根据当前是浏览器自动导入umd或者esm吗?
https://cdn.jsdelivr.net/npm/immer
或者https://unpkg.com/immer
引入的方式,应该是项目默认的暴露方式。很多项目默认都是CJS的形式的,而不是ESM。我们可以直接到项目的
package.json
下查看对应的文件URL去使用,比如说 https://unpkg.com/browse/immer/package.json。简单看了一下应该可以用
https://unpkg.com/browse/immer/dist/immer.legacy-esm.js
或者
https://unpkg.com/browse/immer/dist/immer.production.mjs
的方式来引入。但是这样的话,就会受限于文件名。在大版本迭代的时候就可能会出现异常。
另外就是我记得
jsDelivr
是有提供一个转换服务的,可以直接用末尾添加+esm
的方式来获取 EMS 形式的资源。比如说
https://cdn.jsdelivr.net/npm/immer/+esm
。