Как заставить Angular2 возвращать JS вместо HTML? - PullRequest
0 голосов
/ 15 мая 2018

У меня есть экспресс-приложение, которое вызывает приложение Angular2. Я постоянно получаю сообщение об ошибке: (SystemJS) неожиданный токен <и поиск в нем немного привел меня к выводу, что это обычно происходит из-за неправильного типа содержимого, возвращаемого. </p>

Я обнаружил, что app.module.js возвращает html, а не .js, это то, что выбрасывает код?

Error: (SystemJS) Unexpected token <

Ошибка в деталях:

dashboard:21 Error: (SystemJS) Unexpected token <
    SyntaxError: Unexpected token <
        at eval (<anonymous>)
        at Object.eval (http://localhost:3000/main.js:3:20)
        at eval (http://localhost:3000/main.js:8:4)
        at eval (http://localhost:3000/main.js:9:3)
    Evaluating http://localhost:3000/app/app.module.js
    Evaluating http://localhost:3000/main.js
    Error loading http://localhost:3000/main.js
        at eval (<anonymous>)
        at Object.eval (http://localhost:3000/main.js:3:20)
        at eval (http://localhost:3000/main.js:8:4)
        at eval (http://localhost:3000/main.js:9:3)
    Evaluating http://localhost:3000/app/app.module.js
    Evaluating http://localhost:3000/main.js
    Error loading http://localhost:3000/main.js

Вот снимок его как dev-инструменты для сети: enter image description here

Вот так выглядит мой экспресс:

app.use('/styles.css', express.static(path.join(__dirname, '../angular/src/styles.css')));
app.use('/systemjs.config.js', express.static(path.join(__dirname, '../angular/src/systemjs.config.js')));
app.use('/systemjs-angular-loader.js', express.static(path.join(__dirname, '../angular/src/systemjs-angular-loader.js')));
app.use('/systemjs.config.extras.js', express.static(path.join(__dirname, '../angular/src/systemjs.config.extras.js')));
app.use('/main.js.map', express.static(path.join(__dirname, '../angular/src/main.js.map')));

app.use('/main.js', express.static(path.join(__dirname, '../angular/src/main.js')));
app.use(express.static(path.join(__dirname, '../angular')));
app.use('/api/', auditlog);
app.get('*', (req, res) => {
  res.sendFile(path.join(__dirname, '../angular/src/index.html'));
});

1 Ответ

0 голосов
/ 16 мая 2018

Ваше экспресс-приложение настроено на обслуживание index.html для любого запроса, поэтому вы получите этот файл обратно, когда вы обычно получите 404. Учитывая ошибку, я думаю, вполне вероятно, что у вас отсутствует JSфайл или, возможно, некоторые отсутствующие сопоставления модуля SystemJS.Вы можете использовать сетевой инспектор, чтобы найти отсутствующий файл, посмотрев вкладку предварительного просмотра запроса.

Потребление всех маршрутов удобно для Angular из-за его маршрутизации, но может быть полезно проверить, запрашивает ли клиент text / html, прежде чем возвращать приложение, а в противном случае - 404 - это облегчит идентификациюотсутствующие файлы JS на стороне клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...