2017-01-15 2 views
1

Я должен что-то отсутствует очень просто здесь, потому что я не понимаю, как кто-то может иметь функционирующую угловой Cli приложение, не имея возможности сделать следующее ...Как загрузить пучки с угловыми cli?

Контекст

У меня есть Угловое 2 с эксплойтом express.js, выступающим в качестве API. Я переключился с webpack на angular-cli, чтобы расслоить мои файлы, поскольку он предлагает легкую компиляцию Ahead-Of-Time.

То, что я не ожидал, было угловато-cli настолько самоуверенным, что мне даже требуется хранить файл index.html внутри каталога углового приложения в моем репозитории (ранее я сохранил его в/views для express.js для отправки клиентам).

Проблема

Я изо всех сил, чтобы увидеть, как я могу загрузить выведенные JS пучки из угловых кли, если у меня есть Node.js сервер. Рассмотрим следующий фрагмент кода: angular-cli.json

"apps": [ 
{ 
    "root": "app", 
    "outDir": "public/dist", 
], 

Оба мои bundle.js файлы и мой index.html будут выводиться в public/dist. Это означает, что я должен обновить свой Node.js маршруты изменения:

// Root 
app.get('/', function (req, res) { 
    res.sendFile(path.join(__dirname + '/../views/index.html')); 
}); 

к:

// Root 
app.get('/', function (req, res) { 
    res.sendFile(path.join(__dirname + '/../public/dist/index.html')); 
}); 

Теперь проблема заключается в том, что мой public/dist/index.html файл имеет <base href="/"> тега, и следующий сгенерированные теги сценария:

<script type="text/javascript" src="inline.bundle.js"></script><script type="text/javascript" src="vendor.bundle.js"></script><script type="text/javascript" src="main.bundle.js"></script> 

Ну, очевидно, когда я бегу мой сервер Node.js, эти вышеуказанные пакеты не будут найдены, потому что они не существуют на месте базового HREF в. Нет /inline.bundle.js, потому что он находится по адресу /public/dist/inline.bundle.js. Итак, как я могу загружать приложение frontend?

+0

Рассмотрим с помощью статического веб-сервера, как 'nginx' для статического frontend files, так я всегда делаю –

ответ

-1

Я справляюсь с такими проблемами по-другому. Я никогда не отправляю файл с помощью sendFile, вместо этого я отправляю только данные JSON.

Отправка файла подходит для традиционных не-SPA-приложений. Отправка данных JSON подходит для современных приложений SPA.

+0

Каждый SPA начинается с обслуживания пользователя, по крайней мере, с каким-либо файлом 'index.html'. Да, асинхронные запросы требуются при разработке SPA, поэтому вы можете удалить необходимость перезагрузки страниц, но это не то, о чем я прошу или ищу здесь. – ReactingToAngularVues

0

Я не буду работать, поскольку он ожидает абсолютный путь, а не относительный.

res.sendFile(path.join(__dirname + '/../public/dist/index.html')); 


Вы должны указать в относительный путь все расстояние сервер / от курьерской папки, что-то вроде:

app.use('/', express.static('../public/dist')); 

app.get('*', (req, res) => { 
    res.sendFile('index.html', { root: '../public/dist' }); 
}); 
Смежные вопросы