2015-12-15 4 views
5

Я бегу browserify на мой код, он выглядит следующим образом:приложение не определен после пакетирования

import './app'; 

//——————————————————————————————————————————————————// 
// Components 
//——————————————————————————————————————————————————// 

import './components/_ntToggleClass'; 

приложение просто

const app = angular.module('app', []); 

в то время как файлы в components, ну, компоненты. Но они с использованием app вышеупомянутый:

app.directive('ntToggleClass',() => { 
    ... } 

Когда я положил все в одном файле вручную, все работало. Но после того, как я использовал browserify на это, я получаю

Uncaught ReferenceError: app is not defined

Когда я смотрю в коде, как var app и директива там.

+0

Это не поможет, извините. –

+1

Попробуйте использовать 'require (" ./ components/_ntToggleClass.js ")', который должен непосредственно скопировать содержимое файла. – Scott

+0

Также не работает, @ScottKaye –

ответ

1

Моего друг пришел с помощью ;-)

Я использую Бабель (я думал, что РВП был очевиден, так как я использовал import не require) для моего кодирования (Babelify с es2015, если быть точным), поэтому, поскольку у меня есть import, мне также нужен export.

Решение очень простое, все, что я должен был сделать, это положить

export default app; 

в конце моего app.js файла, а затем импортировать его с помощью

import app from '../app'; 

в мои директивы/компонентов и т.д.

+0

Я использую require вместо импорта и сталкиваюсь с той же проблемой, я включил два контроллера в один файл, а в комплекте второй файл, который он дает, приложение не определено @Tomek –

1

Я хлопнул вместе быстрый образец на github. Это даст вам рабочий репозиторий, который запускает браузер.

Я удалил свои предыдущие комментарии, так как я думаю, что репо должно ответить на ваши вопросы.

Редактировать: Я думаю, что я только что получил ваш вопрос, вы пытались создать глобальную переменную app, чтобы просто использоваться в каждом другом файле? Это невозможно при использовании браузера, любая переменная, которая не required в вашем файле, будет возвращена undefined.

При использовании функции браузера просто требуется то, что вам нужно.

+1

Красиво сделано! Удивительное изображение профиля. – Scott

0

Я думаю, что это касается определения порядка.

const app = angular.module('app', []); Эта часть должна быть верхней части ниже:

app.directive('ntToggleClass',() => { 
    ... } 
+2

Хотя это работает, я бы предпочел не писать 'const app ...' в каждом файле. –

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