2

我对 JS 完全陌生。我在 ios 上开发,我们需要在我们的程序中使用 Web3js。在obj-c中调用js函数就可以了。但是,我使用“require”来导入 Web3js 模块,它会抛出“ReferenceError:找不到变量:require”。怎么了?我错过了什么吗?有人可以帮忙吗??非常感谢。

更新:

如果'require'不可用,我如何使用obj-c调用的js中的其他模块?

这是我的代码。

obj-c 代码:

NSString* path = [[NSBundle mainBundle] pathForResource:@"bridge/src/index" ofType:@"js"];
jsFunc = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

JSContext* jsContext = [[JSContext alloc] init];
[jsContext evaluateScript:jsFunc];
JSValue* func = jsContext[@"getAddress"];
JSValue* = [func2 callWithArguments:@[@"0x8730f6ad1c0d387644590966bdbfedba44fe250118df0f97f11190ad5727b312"]];    

js:

function getAddress(prvKey)
{
  try{
      var Web3 = require('../../3rd_party/web3.js-1.0.0');     
      var web3 = new Web3();
      return web3.eth.accounts.privateKeyToAccount(prvKey);
  }
  catch (e)
  {
      return e;
  }
}
4

1 回答 1

0

我使用Browserify打包所有模块,然后使用webView调用js函数。

这是我的 js 文件 index.js

"use strict"
let Web3 = require('web3.js');
window.Web3 = Web3;

然后使用 Broswerify 打包

browserify index.js -o web3.js

我的html,

<html>
<head>
    <script type="text/javascript" src="web3.js"></script>   
</head>
<body>
    <script type="text/javascript">
        function getAddress(prvkey)
        {
            try
            {
                var web3 = new Web3();
                var account  = web3.eth.accounts.privateKeyToAccount(prvkey);
                return account.address;
            }
            catch (e)
            {
                return e;
            }
        }
    </script>
</body>

于 2017-08-28T09:50:33.033 回答