问题描述和重现步骤:
使用<script type=module>
加载src/moment.js
时:
源为“ http://localhost :5000/node_modules/moment/src/lib/utils/hooks”的模块加载失败。
环境:
任何支持 ES 模块的浏览器。
将.js
文件扩展名添加到src/
下的所有导入很容易导致最多 105-228 个 HTTP 请求的链(取决于语言环境)
通过将esnext
和module
属性添加到package.json
可以实现更合适的结果。 从Axel Rauschmayer的
"esnext": "src/moment.js",
"module": "./moment.esm.js",
(其中./moment.esm.js
将是一个新的构建目标,遵循 ESM 而不是 CJS 模块格式)
+1 表示新的 esm 构建目标。 作为参考, Ractive.js 提供了一个 .mjs dist 文件
我将在https://github.com/moment/momentjs.com 中获取有关此文档的 PR
顺便说一句,即使有大量的 HTTP 请求,在演示中使用浏览器构建也很方便——演示不会被迫使用全局脚本依赖来污染它们的 HTML(我知道它只是一个脚本标记,如果有 IIFE 或 UMD 构建,但脚本标记仍然不适合使用它的 JS 和更干净的模块分发)。
@brettz9我会看看不会破坏任何现有用户的 PR。
最有用的评论
将
.js
文件扩展名添加到src/
下的所有导入很容易导致最多 105-228 个 HTTP 请求的链(取决于语言环境)通过将
esnext
和module
属性添加到package.json
可以实现更合适的结果。 从Axel Rauschmayer的(其中
./moment.esm.js
将是一个新的构建目标,遵循 ESM 而不是 CJS 模块格式)