Javascript 如何将web3实例从nodejs返回到ui

Javascript 如何将web3实例从nodejs返回到ui,javascript,node.js,web3js,Javascript,Node.js,Web3js,我想返回一个包含提供程序对象的web3实例。我想将该对象返回到UI,以便在UI中使用该web3实例。这有可能实现吗? 我尝试将web3转换为JSON.stringify(web3),但抛出错误无法将循环对象转换为字符串 这是我的nodejs代码 const provider = new HDWalletProvider( 'dress steel phrase album average asd dd room exile web eree cause', 'https:

我想返回一个包含提供程序对象的web3实例。我想将该对象返回到UI,以便在UI中使用该web3实例。这有可能实现吗? 我尝试将web3转换为JSON.stringify(web3),但抛出错误无法将循环对象转换为字符串

这是我的nodejs代码

    const provider = new HDWalletProvider(
    'dress steel phrase album average asd dd room exile web eree cause',
    'https://rinkeby.infura.io/I7P2ErGiQjuq4jNp41OE',
  );

  web3 = new Web3(provider);
我想像这样将web3实例从节点返回到UI

app.get('/getWeb3', async (req, res) => {

  console.log('web3 instance', web3);

  res.json( JSON.stringify(web3)); // this is throwing error.
})

我曾尝试使用第三方库将对象转换为类似于json的warp库,但仍然面临一些问题。任何建议都会对我有帮助。谢谢

您不能发送
web3
实例,这没有多大意义,因为您可以直接在客户端获得
web3
实例

通常在客户端,您使用,这将允许您在不运行完整节点的情况下与以太坊网络进行交互

客户端

if (typeof web3 !== 'undefined') {
  web3 = new Web3(web3.currentProvider);
} else {
  // set the provider you want from Web3.providers
  web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
}
// Interact with your contract
const Contract = web3.eth.contract(ABI);
const contract = Contract.at('address'); 

contract.someMethod((err, res) => console.log(res));
现在,用户将使用以太坊网络自己的地址和密钥与以太坊网络进行交互,而不是使用您的私钥,这正是您试图做的

服务器上的
web3
实例必须保持私有,并且不能向客户端公开


与其尝试将实例发送给客户端,不如告诉我们您打算如何处理该实例,这是需要解决的实际问题。

尝试将对象字符串化时有什么错误?Marcos感谢您的回答。我尝试只在客户端调用web3实例,但当我将应用程序部署到prod中时,它是https,不接受http请求获取混合内容错误。这就是为什么我想写一个nodejsapi调用并返回web3实例。展示一下如何在客户端实例化web3。您的web是http吗?是的,与我在上述代码中提到的方式相同。