Tengo este código y node_modules en una carpeta compartida en el proyecto de código x. Tiene que mostrarme la clave de texto generada a partir de js-code. js-code funciona fuera de node.js, pero me muestra 'indefinido' en la vista de contenido. ¿Puedo importar módulos js en el proyecto de código x? ¿Funcionará en iPhone?
// ContentView.swift // Shared import Foundation import SwiftUI import JavaScriptCore class Cube { func doJS(text: String) -> String? { let jsSource = "var testFunct = function test(message) { const NodeRSA = require('node-rsa'); const key = new NodeRSA(); var k = key.generateKeyPair(); var p = k.exportKey('pkcs1'); return p};" let context = JSContext() context?.evaluateScript(jsSource) let testFunction = context?.objectForKeyedSubscript("testFunct") return testFunction?.call(withArguments: [text]).toString() } } struct ContentView: View { var body: some View { Text(Cube().doJS(text: "Hello, world!") ?? "No result") .fontWeight(.black) .foregroundColor(Color.green) .padding() } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }Mi código js:
// npm install node-rsa // https://www.npmjs.com/package/node-rsa var testFunct = function test(message) { const NodeRSA = require('node-rsa'); const key = new NodeRSA(); var k = key.generateKeyPair(); var p = k.exportKey('pkcs1'); return p}; console.log(testFunct())