簡體   English   中英

節點 14 中的“默認 ESM 加載程序僅支持文件和數據 URL”

[英]"Only file and data URLs are supported by the default ESM loader" in Node 14

我正在嘗試使用 ES 模塊(即import / export語法)編寫一個 JavaScript 包。 具體來說,JavaScript 是從 TypeScript 轉譯的,使用什么 TypeScript 配置產生最接近 Node.js 14 功能的輸出中建議的設置?

這在最新版本的 Node 14 中運行良好,但在 Cypress 的 CircleCI orb 中base-14執行器中失敗,我認為它使用的是 Node 14.7.0。 錯誤有點神秘:

internal/process/esm_loader.js:74
    internalBinding('errors').triggerUncaughtException(
                              ^

Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only file and data URLs are supported by the default ESM loader
    at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:781:11)
    at Loader.resolve (internal/modules/esm/loader.js:85:40)
    at Loader.getModuleJob (internal/modules/esm/loader.js:229:28)
    at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:51:40)
    at link (internal/modules/esm/module_job.js:50:36) {
  code: 'ERR_UNSUPPORTED_ESM_URL_SCHEME'
}

這並沒有說明默認 ESM 加載程序實際上試圖加載什么。 一個最小的示例是導入 Node 的內置模塊之一,例如fs ,它肯定存在:

  • package.json

     { "name": "demo", "version": "0.1.0", "type": "module", "scripts": { "start": "node index.js" } }
  • index.js

     import fs from "node:fs";

我已經確認這在 14.20 中有效,但在 14.7 中失敗,即使 ES 模塊應該從 14.0 開始支持。

到了 Node 14.13.0,錯誤信息變得清晰了很多:

Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only file and data URLs are supported by the default ESM loader. Received protocol 'node:'

node: -prefixed "namespace" 導入,根據docs ,僅從節點 12.20.0 和 14.13.1 支持。 如果你正在編寫一個庫來支持 Node 14.0.0 及更高版本,你必須例如import fs from "fs"; .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM