![](/img/trans.png)
[英]Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only file and data URLs are supported by the default ESM loader - Vue 3
[英]"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.