与终端中的 运行 二进制文件相比,wasm 二进制文件给出了错误的输出

wasm binary giving wrong output as compared to running binary in terminal

我有一个 go 程序 (https://github.com/klauspost/cpuid),我在我的终端中 运行,它工作得很好。 我想让它像浏览器中的服务 运行 一样。我看到的唯一可能的方法是将其编译为 wasm 二进制文件并静态提供文件。

但问题是,终端和浏览器的输出是不同的。我在这里遗漏了什么吗?

  1. go 代码在上面共享的 repo 中可用
  2. programm 使用 GOOS=js GOARCH=wasm go build -o test.wasm test.go
  3. 编译为 wasm
  4. 静态服务的 Js 代码
const http = require('http');

const nStatic = require('node-static');

// wasm file is in public folder. 
// wasm_exec.js is used which is available in go installtion
const fileServer = new nStatic.Server('./public');

const PORT = 8000;

http.createServer(function (req, res) {

  fileServer.serve(req, res);

}).listen(PORT);

In browser

In terminal

虽然最后两者都 运行 相同 CPU 从技术上讲这是不正确的。 WASM 是虚拟 CPU 的字节码。大多数浏览器将该字节码翻译成机器字节码,然后执行。但它保证了从这个虚拟机几乎无法访问真实机器,除非他接受 API。因此,无论它们最有可能下降的功能是什么,或者被虚拟功能取代的地方,等等 return 错误代码或虚拟值,以某种方式选择它们可以与实际值区分开来。