簡體   English   中英

無法解析模塊說明符

[英]Failed to resolve module specifier

我才剛剛開始我的 JS 之旅,如果你能幫助我使用 JS 接收數據,我將非常感激。 我在 alcor 交易網站上找到了該信息,該網站是蠟(游戲加密貨幣)的交易網站。

現場有什么:

// 代碼尚未測試,並提供解釋原因

import fetch from 'node-fetch'
import { Api, JsonRpc, RpcError } from 'eosjs'

const rpc = new JsonRpc('https://wax.greymass.com', { fetch })

// 從表中獲取買入訂單

const { rows } = await rpc.get_table_rows({
  code: 'alcordexmain',
  table: 'buyorder',
  limit: 1000,
  scope: 29, // Market id from /api/markets
  key_type: 'i128', // we are using it for getting order sorted by price.
  index_position: 2
})

由於 JSHint 版本,我遇到了一些麻煩並將其更新為 9。但是“等待”仍然是紅色的,並且 JSHint 在它之后要求分號 - 這會導致大量新錯誤。 然而,該項目正在瀏覽器中打開,當然沒有任何信息。 但是在控制台中我看到一個錯誤。

index.html:1 未捕獲的類型錯誤:無法解析模塊說明符“node-fetch”。 相對引用必須以“/”、“./”或“../”開頭。

PS 我檢查了有這樣錯誤的帖子,但實際上我不明白我該怎么辦,因為他們都建議對 JSON 文件進行一些更改,而我只有 index.html 和那個 js。 文件。

您瀏覽器中的 JavaScript 與服務器上的 JavaScript 之間存在差異。

瀏覽器中的 JavaScript 是可以注入 HTML 的代碼(內聯或鏈接),由瀏覽器評估。

服務器上的 JavaScript 與瀏覽器中的 JavaScript 無關。 語言相同,但環境不同。 這就像“在 Paint 中繪畫”和“在現實生活中的畫布上繪畫”。 Colors 是相同的,但其他的都不是。

因此,您在這里嘗試做的是在瀏覽器中運行服務器端 JavaScript。 這就是您收到此錯誤的真正原因。

有兩種方法可以修復此錯誤。

可能是你應該的那個 go

您應該安裝 Node.js,閱讀有關 npm 的信息,初始化您的 npm 項目,將所有內容放入 .js 文件並使用 Node 進行評估。

簡而言之,假設您已經安裝了 Node.js 並且node -v在您的終端中輸出了一些內容。 然后你需要做的就是:

$ cd path/to/the/directory/you/like
$ npm init -f
$ npm install --save node-fetch eosjs
$ touch index.js

然后使用您喜歡的編輯器編輯index.js ,在其中添加您要運行的代碼。

由於在“頂層”使用await ,您可能會遇到錯誤。 在這種情況下,將其放入異步 function:

import fetch from 'node-fetch'
import { Api, JsonRpc, RpcError } from 'eosjs'

const rpc = new JsonRpc('https://wax.greymass.com', { fetch })

(async () => {
  const { rows } = await rpc.get_table_rows({
    code: 'alcordexmain',
    table: 'buyorder',
    limit: 1000,
    scope: 29, // Market id from /api/markets
    key_type: 'i128', // we are using it for getting order sorted by price.
    index_position: 2
  });
})();

Aaaand,就是這樣。 您根本不需要在這里運行瀏覽器。

可能是你不應該的那個 go,但可以

如果你需要在瀏覽器中運行你的 JavaScript,那么你需要使用像webpack這樣的工具來捆綁所有的 deps(這仍然需要你使用 Node.js & npm),或者你可以替換你嘗試使用的 deps客戶端替代方案。

例如,您可以使用 Fetch API 而不是要求node-fetch獲取。

用什么代替eosjs我不知道,但如果你決定在瀏覽器中使用這個依賴,你至少需要使用import maps來告訴瀏覽器如何解決這樣的依賴。 因為,好吧,您遇到的錯誤准確地告訴您:您的瀏覽器不知道您要導入什么。 瀏覽器使用 URL 作為導入路徑,而不是 id(或“裸名”)。

暫無
暫無

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

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