2015-12-18 3 views
1

я получаю это исключение след:TypeError при работе Угловая директива под электроном?

TypeError: element.get не является функцией по ссылке (http://localhost:9071/js/class-editor-canvas-directive.js:6:33) на invokeLinkFn (http://localhost:9071/bower_components/angular/angular.js:8841:9) на nodeLinkFn (http://localhost:9071/bower_components/angular/angular.js:8335:11) на compositeLinkFn (http://localhost:9071/bower_components/angular/angular.js:7731:13) в compositeLinkFn (http://localhost:9071/bower_components/angular/angular.js:7734:13) на publicLinkFn (http://localhost:9071/bower_components/angular/angular.js:7611:30) на http://localhost:9071/bower_components/angular-ui-router/release/angular-ui-router.js:4026:9 в invokeLinkFn (http://localhost:9071/bower_components/angular/angular.js:8841:9) в nodeLinkFn (http://localhost:9071/bower_components/angular/angular.js:8335:11) в compositeLin kFn (http://localhost:9071/bower_components/angular/angular.js:7731:13)

Я пытаюсь запустить приложение на основе угловых.js и paper.js под электроном. Он отлично работает в Интернете и использует хром в качестве пользовательского интерфейса. Тем не менее, я также хочу поддерживать автономный пользовательский интерфейс, используя электронную оболочку.

Ошибка выше происходит на последней строке ниже:

jModeller.directive('classEditor', function() { 
return { 
    restrict: 'A', 
    link: function (scope, element, attrs) { 

     paper.setup(element.get(0)); 

При запуске на электрон, отладчик показывает, что тип «элемента» является:

element: JQLite[1] 
    > 0: canvas 
    length: 1 
__proto__: Object[0] 

Но когда работает под хром , отладчик показывает тип «элемента»:

element: jQuery.fn.init[1] 
    0: canvas 
    context: canvas 
    length: 1 
__proto__: jQuery[0] 

Почему разница? И есть ли какое-то выражение, которое я могу использовать вместо element.get (0), чтобы получить эту угловую директиву, работающую под электроном?

=====

Дополнительная информация.

Вот это «main.js», который работает под электроном:

'use strict'; 

var app = require('app'); 
var BrowserWindow = require('browser-window'); 

var mainWindow = null; 

var express = require('express'); 
var expressApp = express(); 

expressApp.use('/', express.static('../assets')); 
expressApp.listen(9071); 

app.on('ready', function() { 
mainWindow = new BrowserWindow({ 
    height: 600, 
    width: 800 
}); 

mainWindow.loadUrl('http://localhost:9071/#/');  
}); 

Таким образом, вы можете видеть, что я служу до приложения на порт 9071, а затем просто использовать электрон, чтобы просмотреть, как и на локальном хосте.

В index.html, все JavaScript библиотеки загружены:

<!DOCTYPE html> 
<html xmlns:ng="http://angularjs.org" class="no-js" lang="en" ng-app="jModeller" id="ng-app"> 
    <head> 
    <meta charset="UTF-8"> 

<script src="bower_components/jquery/dist/jquery.js"></script> 
<script src="bower_components/angular/angular.js"></script> 
<script src="bower_components/bootstrap/dist/js/bootstrap.js"></script> 
<script src="bower_components/angular-bootstrap/ui-bootstrap-tpls.js"></script> 
<script src="bower_components/angular-resource/angular-resource.js"></script> 
<script src="bower_components/angular-cookies/angular-cookies.js"></script> 
<script src="bower_components/angular-sanitize/angular-sanitize.js"></script> 
<script src="bower_components/angular-animate/angular-animate.js"></script> 
<script src="bower_components/angular-touch/angular-touch.js"></script> 
<script src="bower_components/angular-route/angular-route.js"></script> 
<script src="bower_components/angular-ui-router/release/angular-ui-router.js"></script> 
<script src="bower_components/angular-mocks/angular-mocks.js"></script> 
<script src="bower_components/ng-sortable/dist//ng-sortable.min.js"></script> 
<script src="bower_components/angular-ui-select/dist/select.js"></script> 
<script src="bower_components/ng-tags-input/ng-tags-input.min.js"></script> 
<script src="bower_components/rfc6570/rfc6570.js"></script> 
<script src="bower_components/angular-hal/angular-hal.js"></script> 
<script src="bower_components/angular-slugify/angular-slugify.js"></script> 
<script src="bower_components/ng-table/dist/ng-table.min.js"></script> 
<script src="bower_components/moment/moment.js"></script> 
<script src="bower_components/angular-moment/angular-moment.min.js"></script> 
<script src="bower_components/angular-ui-tree/dist/angular-ui-tree.js"></script> 
<script src="bower_components/angular-cache-buster/angular-cache-buster.js"></script> 
<script src="bower_components/angular-prompt/dist/angular-prompt.js"></script> 
<script src="bower_components/angular-breadcrumb/dist/angular-breadcrumb.min.js"></script> 
<script src="bower_components/highcharts/highcharts.js"></script> 
<script src="bower_components/highcharts/highcharts-3d.js"></script> 
<script src="bower_components/highcharts/modules/exporting.js"></script> 
<script src="bower_components/underscore.string/lib/underscore.string.js"></script> 
<script src="bower_components/underscore/underscore.js"></script> 
<script src="bower_components/angular-aria/angular-aria.js"></script> 
<script src="bower_components/spin.js/spin.js"></script> 
<script src="bower_components/angular-spinner/angular-spinner.js"></script> 
<script src="bower_components/angular-toggle-switch/angular-toggle-switch.js"></script> 
<script src="bower_components/angular-toastr/dist/angular-toastr.tpls.min.js"></script> 
<script src="bower_components/angular-ui-utils/ui-utils.js"></script> 
<script src="bower_components/angular-loading-bar/build/loading-bar.min.js"></script> 
<script src="bower_components/angular-progress-arc/angular-progress-arc.min.js"></script> 
<script src="bower_components/angular-highcharts-directive/src/directives/highchart.js"></script> 
<script src="bower_components/angular-bootstrap-lightbox/dist/angular-bootstrap-lightbox.js"></script> 
<script src="bower_components/angular-async-series/dist/angular-async-series.min.js"></script> 
<script src="bower_components/angular-ui-grid/ui-grid.js"></script> 
<script src="bower_components/angular-local-storage/dist/angular-local-storage.min.js"></script> 
<script src="bower_components/ng-csv/build/ng-csv.min.js"></script> 
<script src="bower_components/ng-file-upload/ng-file-upload.min.js"></script> 
<script src="bower_components/paper/dist/paper-full.min.js"></script> 

Довольно много библиотек, и, конечно, не все нужны. Я просто сократил этот список из другого проекта, над которым я работал. Проблема, кажется, заключается в том, что jquery не загружается правильно и недоступен для углового.

Я могу видеть под вкладкой сети инструментов инструментов, хотя «jquery.js» успешно загружен статусом 200, когда загружен index.html.

+0

У вас есть/(определено ранее tan angularjs) jQuery под электроном? –

+0

Да, в index.html jquery первое импортированное: user2800708

+0

кажется, что в электронном jQuery не было найдено, или вместо этого используется встроенный jqLite. Удостоверьтесь, что jQuery действительно загружен. Оберните это предупреждение (« У вас запущена версия jQuery: »+ $ .fn .jquery), в $ (document) .ready – Molda

ответ

0

Это работает, если я включаю JQuery так:

<script type="text/javascript"> 
    window.$ = window.jQuery = require(__dirname+'/js/jquery.js'); 
</script> 

Видимо, это известная проблема с JQuery и электрона.

+0

Этот ответ также можно найти: http://stackoverflow.com/questions/30271011/electron-jquery-errors. может, кто-то может закрыть этот вопрос как дубликат? – user2800708

Смежные вопросы