Hacktoberfest 2026:維護者為十月標記出來的 issue,仍然開放、適合新手。 瀏覽 Hacktoberfest issue

Export maps and node support

未關閉
#795 5 則留言 3 個 reaction 已指派 0 人 在 GitHub 檢視

還沒有人認領這個 Issue。

評估

難度
4/5
預估耗時
3-5 天
新手友好度
35/100
Issue 類型
缺陷
描述清晰度
需要釐清
活躍度
停滯
技術堆疊
javascript, node.js
領域
build-system

研究方向

從 package.json 的 exports 和 main 欄位,以及產生的 dist/index.modern.js 和 dist/index.js 開始;在 Node.js v14.15.3 下重現 require('color2k')。將 package 的 exports 解析與 Node 關於條件式 exports 的文件進行比較。當已發布 package 的設定或輸出能夠透過 require() 載入,同時保留瀏覽器進入點時,即視為完成。

由索引模型根據 Issue 內容生成。

描述

Hello there 👋,

I recently switched to microbundle for a bunch of my libs and I love it so far, however, I ran into an issue where the modern bundle (via exports) doesn't seem to run inside node.js.

My (simplified) package.json looks like this:

{
  "name": "color2k",
  "sideEffects": false,
  "exports": "./dist/index.modern.js",
  "main": "./dist/index.js",
  "unpkg": "./dist/index.umd.js",
  "module": "./dist/index.module.js",
  "source": "./src/index.ts",
  "types": "./dist/index.d.ts",
  "scripts": {
    "build": "microbundle"
  }
}

And after I run microbundle, my dist folder looks like this

index.d.ts
index.js
index.js.map
index.modern.js
index.modern.js.map
index.module.js
index.module.js.map
index.umd.js
index.umd.js.map

And after I publish with this config and run the following code with Node.js, I get the following error:

// my-file.js
const color2k = require('color2k');

// ...

SyntaxError: Unexpected token 'export'
    at wrapSafe (internal/modules/cjs/loader.js:979:16)
    at Module._compile (internal/modules/cjs/loader.js:1027:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Module.require (internal/modules/cjs/loader.js:952:19)
    at require (internal/modules/cjs/helpers.js:88:18)

I suspect this is due to Node.js not knowing what to do with exports. For more context, I'm not using the mjs extension when running this code in node LTS v14.15.3.

Maybe this is more of a question rather than a bug but in general: How do I use exports with microbundle? How can I author a package that is both for Node.js and browsers?

  • Do I need to write a conditional exports map?
  • Do I need to post-fix the modern bundle with the .mjs extension? If so how do I do that with microbundle?

Thanks for any support!

For now, I'll just remove the exports field.

主要語言
JavaScript
星號
8.1k
分支
358
PR 合併指標
30 天內沒有已合併 PR

貢獻指南

這個儲存庫沒有索引到貢獻指南

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

developit/microbundle 的其他 Issue

查看 developit/microbundle 的全部 Issue

相似的 Issue

更多 JavaScript Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。