Я совершенно не знаком с JS. Я развиваюсь на ios, и нам нужно использовать Web3js в нашей программе. Это нормально, чтобы вызвать функцию js в obj-c. Тем не менее, я использую "require" для импорта модулей Web3js, он выбрасывает "ReferenceError: не удается найти переменную: require". Что просходит? Я что-то пропустил? Любой может помочь? Большое спасибо.
Обновить:
Если "require" не используется, как я могу использовать другие модули из js, вызванных obj-c?
вот мой код.
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"]];
ЯШ:
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;
}
}
Я использовал 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>
require
это стандартная функция только во время выполнения Node.js. Возможно, вам придется импортировать модули Web3js другим способом. Но обязательно нужно увидеть ваш код, и вы должны объяснить свои настройки, чтобы понять, что вы пытаетесь сделать.