因此,我构建了一个有角度的应用程序,当我完成ng build --prod
时,它成功完成了 ,没有错误和没有警告完全没有。
我计划将所有构建过程中生成的文件复制到Node Express服务器中的views/
目录中,就像下面的
--server
---server.js
---views/
----index.html
----main.000000000.js
----runtime.000000.js
----styles.000000.css
----icon_000000.png
----etc (all generated files from `ng build --prod`)
我放在server.js
里面的是一个简单的应用程序,如下所示:
const express = require('express');
const cors = require('cors');
const morgan = require('morgan');
const bodyParser = require('body-parser');
const path = require('path');
const app = express();
app.use(cors());
app.use(morgan('dev'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
// Routes
app.use(express.static(path.join(__dirname, 'views/')));
app.get('*', (req, res) => {
return res.sendFile(path.join(__dirname, `views/index.html`));
});
const port = process.env.PORT || 3001;
app.listen(port);
console.log('Server has started on port ' + port);
当我点击localhost:3001/
时,会出现{strong>许多错误,该错误基本上意味着当浏览器请求这些(某些)静态文件时,它将得到响应Uncaught SyntaxError: Unexpected token <
,而不是相关的静态文件。
我如何使用以下代码进行修复:
index.html
但是上述解决方案很脏,就像我们必须对const express = require('express');
const cors = require('cors');
const morgan = require('morgan');
const bodyParser = require('body-parser');
const path = require('path');
const app = express();
app.use(cors());
app.use(morgan('dev'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
const allowed = [
'.js',
'.css',
'.png',
'.jpg',
'.gif',
'.ico',
'.svg',
'.woff',
'.eot',
'.ttf',
];
app.get('*', (req, res) => {
if (allowed.filter(ext => req.url.indexOf(ext) > 0).length > 0) {
res.sendFile(path.resolve(`views/${req.url}`));
} else {
res.sendFile(path.join(__dirname, 'views/index.html'));
}
});
const port = process.env.PORT || 3001;
app.listen(port);
console.log('Server has started on port ' + port);
内的每个非.html
静态文件进行硬编码一样,我在这里需要另一个解决方案,如何在不对每个静态文件进行硬编码的情况下解决这个问题延期?在角度/dist
期间我做错什么了吗?
谢谢