Я пытаюсь создать титановый модуль iOS с использованием предварительно скомпилированного модуля CommonJS. Как файл README говорит:Модуль iOS CommonJS возвращает ошибку «undefined is not a constructor»
All JavaScript files in the assets directory are IGNORED except if you create a file named "com.moduletest.js" in this directory in which case it will be wrapped by native code, compiled, and used as your module. This allows you to run pure JavaScript modules that are pre-compiled.
Я создал файл, как это:
function ModuleTest(url){
if(url){
return url;
}
}
exports.ModuleTest = ModuleTest;
Я использую 5.1.2.GA SDK (также попытался с 5.3.0.GA) и я могу построить модуль успешно либо с python build.py
, либо titanium build --platform iOS --build-only
. Тогда, в моем тестовом приложении делания:
var test = require('com.moduletest');
var url = new test.ModuleTest('http://url');
дает мне эту ошибку:
неопределенными не является конструктором. Я пробовал много альтернатив, но ничего не работает, и я не нашел никакой помощи в документации о предварительно скомпилированных JS-модулях для iOS. На самом деле, тот же процесс отлично подходит для Android! У вас есть идея, почему?
Моя среда:
XCode 7.3.1
Операционная система Имя - Mac OS X Version - 10.11.5 Architecture - 64-разрядные # процессоры - 8 памяти - 16.0GB
Node.js Node.js Версия - 0.12.7 npm Версия - 2.11.3
Appcelerator CLI Installer - 4.2.6 Основной пакет - 5.3.0
Titanium CLI CLI версия - 5.0.9 узла APPC версия - 0.2.31
Может быть, это что-то связано с моим Версия узла или приложение CLI, не уверены =/
Спасибо!
Где вы разместили файл 'com.moduletest.js'? –
Привет, Брентон, я положил его в папку с папками модулей. Тестирование/активы/com.moduletest.js http://i.imgur.com/4OW2i86.png –
Для модулей commonjs вы можете просто поместить их прямо в проект приложения. Попробуйте поместить этот файл в папку /app/lib/com.moduletest.js вашего приложения. –