JS文件的相对路径在/reset_page/jwt.token.here时更改

时间:2018-08-21 11:36:35

标签: node.js express jwt

在我更改此设置之前,应用程序运行正常:

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>

在进行上述更改之前,一切都很好。

1 个答案:

答案 0 :(得分:0)

必须对此进行更改:

<script src="js/bundle.js"></script>

对此:

<script src="/js/bundle.js"></script>
模板index.ntl文件中的

(即,在路径中添加正斜杠)。

根据这些答案:

https://stackoverflow.com/a/32673698

https://stackoverflow.com/a/22225942