Я пытаюсь создать шаблон шаблона для загрузки угловых 2 приложений с использованием выраженных, угловых 2, машинописных, gulp и systemjs. По какой-то причине мой файл index.html не распознает мой файл bootstrap.js
. Все мои jade
и typescript
находятся в src
. Я использую gulp, чтобы переписать машинописные тексты от src
до dist
и обслуживать мои статические активы от node_modules
и jspm_packages
в экспресс. Но когда он, наконец, приходит время для вызова System.import
, например, так: System.import('app').catch(console.error.bind(console))
, я получаю:Почему мой ботстрап с угловым 2-му приложением?
Error: SyntaxError: Unexpected token < Evaluating http://localhost:3000/app/bootstrap.js Error loading http://localhost:3000/app/bootstrap.js
ошибка, вероятно, вызвано в angular2-polyfills.min.js
.
Вот мой основной экспресс-бэкенд, чтобы дать вам представление о том, как мои активы и файлы служили вверх (я с подозрением, что я имею временный brainfart и мои пути выключены):
const app = express();
app.use('/jspm_packages', express.static('jspm_packages'));
app.use('/node_modules', express.static('node_modules'));
app.get('*', function(req, res) {
const file = fs.readFileSync('src/index.jade').toString();
const html = jade.render(file);
return res.send(html);
});
app.listen(process.env.PORT || 3000);
Мой файл index.html
находится в dist
, каталог, в котором хранится весь переданный javascript. Вот packages
свойства на моем System.config:
packages: {
"dist": {
"main": "bootstrap",
"format": "system",
"defaultExtension": "js"
}
},
Я был под впечатлением, что dist
идентифицирует папку относительно BASE_URL
(в моем случае это просто /
), а main
свойства определяет имя файла , Поэтому я подумал, что, позвонив System.import('app')
, он заглянет внутрь папки app
внутри dist
и найдет файл bootstrap.js
для загрузки моего приложения angular2, но это, похоже, не так. Когда я открываю свою консоль с хром, bootstrap.js
не появляется в моих источниках, поэтому я предполагаю, что где-то есть ошибка пути, но я пробовал все варианты и не могу заставить его работать.
Любая помощь была бы принята с благодарностью, спасибо.
Update:
Вот мой index.html
: https://jsfiddle.net/r02r3jk3/ Вот структура папок и код на стороне сервера, который обслуживает до содержания: https://jsfiddle.net/cejk0jw3/
Когда я инспектировать сеть Tab для ответа на запрос на browser.js
файл в angular2/platform
, я получаю следующее:
запрос URL является http://localhost:3000/jspm_packages/npm/[email protected]/platform/browser.js
Ответ имеет тип контента Content-Type:text/html; charset=utf-8
, но ответ - мой индекс.HTML-файл :(
Похоже, вы пропускаете тег сценария. С этим сообщением об ошибке возникает множество вопросов. (Я сам не использую TS и не знаю подробностей) –
Я добавил обновление моего ответа, чтобы объяснить, почему удаление «углового2»: «npm: [email protected]» 'работал. – Abdulrahman
Спасибо @Abdulrahman, ваше обновление сделало полный смысл. Похоже, я должен просто вывести угловой из node_modules в любом случае, так как я не буду использовать его на бэкэнде – roonie