在我更改此设置之前,应用程序运行正常:
app.use(express.static("dist"));
app.get(["/", "/page_1", "/page_2"], api_pages_get);
为此(我在第二行添加了一条路径):
app.use(express.static("dist"));
app.get(["/", "/page_1", "/page_2", "/reset_page/:reset_password_token"], api_pages_get);
现在,前端HTML并未引用它来加载所需的JS文件:
http://localhost:3000/reset_page/js/bundle.js
而不是:
http://localhost:3000/js/bundle.js
由于某种原因,它正在将目录添加到相对路径。
Chrome开发者工具中的特定错误消息是:
无法加载资源:服务器响应状态为404 (未找到)拒绝执行脚本 “ http://localhost:3000/reset_page/js/bundle.js”,因为它的MIME类型 ('text / html')不可执行,并且严格的MIME类型检查是 启用。
JWT令牌的格式为:
eyJhbGciOiJIUzI1TiIsInR5cCI6IkpXVCJ0.eyJ1c2VySWQiOjEsImlhdCI6MTUzNDgzMzgyNn5.M8P0Xt92rKVmOximyyjgFISZc8hGFZA3eQjloRHGksB
也许这是一个愚蠢的主意,但是JWT令牌中的“点”会以某种方式使表达混乱吗?
修改
在适当的情况下,我将使用simple templating engine
示例,如下所述:
https://expressjs.com/en/advanced/developing-template-engines.html
res.render('index', { page_html: page_html, page_tagline: page_tagline });
app.engine('ntl', function(filePath, options, callback) {
fs.readFile(filePath, function(err, content) {
if (err) return callback(err)
var rendered = content.toString().replace('#page_html#', options.page_html).replace('#page_tagline#', options.page_tagline);
return callback(null, rendered)
})
})
app.set('views', './views')
app.set('view engine', 'ntl')
在模板文件index.ntl
中像这样引用js文件:
<script src="js/bundle.js"></script>
在进行上述更改之前,一切都很好。
答案 0 :(得分:0)
必须对此进行更改:
<script src="js/bundle.js"></script>
对此:
<script src="/js/bundle.js"></script>
模板index.ntl
文件中的(即,在路径中添加正斜杠)。
根据这些答案: