我才开始我的JS之旅,如果你帮助我使用JS接收数据,我将非常感激。我在alcor交换网站上发现了这个信息,这是wax(游戏加密货币)的交换网站。
现场情况:
//代码尚未测试,并提供了解释原因
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 Uncaught TypeError: Failed to resolve module specifier "node-fetch"相对引用必须以"/"、"/"或"…/"开头。
注:我检查了这样的错误,但实际上不明白我应该怎么做,因为他们都提出了JSON文件的一些变化,我只有index.html和js。文件。
浏览器上的JavaScript和服务器上的JavaScript是有区别的。
浏览器中的JavaScript是可以注入到HTML(内联或链接)中的代码,由浏览器计算。
服务器上的JavaScript与浏览器中的JavaScript无关。语言是一样的,但环境不同。这就像"用颜料画画"one_answers"在现实生活的画布上画画"。颜色是一样的,但其他的都不一样。
所以,这里你要做的是在浏览器中运行服务器端JavaScript。这就是你得到这个错误的真正原因。
有两种方法可以修复这个错误。
也许你应该选择
你应该安装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
的"顶级"。在本例中,将其放入async函数中:
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
});
})();
啊,就是这样。你根本不需要在这里运行浏览器
可能是你不应该去,但可以去的地方
如果你需要在浏览器中运行你的JavaScript,那么你需要使用webpack这样的工具捆绑所有的深度(它仍然需要你使用Node.js &Npm),或者你可以用客户端替代品替换你想要使用的深度。
。您可以使用Fetch API,而不是需要node-fetch
。
用什么来代替eosjs
我不知道,但是如果你决定在浏览器中使用这个依赖,你至少需要使用import maps来告诉浏览器如何解析这些依赖。因为,你得到的错误告诉你:你的浏览器不知道你要导入什么。浏览器使用url作为导入路径,而不是id(或"纯名称")。