Express 路由中调用修改文件的方法导致页面静态资源不能加载的问题
环境
- node v6.11.2
- express 4.16.2
代码
下面的代码是在应用第一次访问的时候初始化用的,操作仅仅是将config.json
中的initialized
字段改为true
,然后重定向到登录页面
router.get('/initialization' ,(req, res) => {
res.render('public/initialization', {
title: '初始化'
})
})
router.post('/initialization', (req, res, next) => {
readConfig().then(data => {
data.initialized = true
return saveConfig(data)
}).then(() => {
res.redirect('sign-in')
}).catch(err => {
next(err)
})
})
其中readConfig和saveConfig是对config.json操作的方法,代码如下
let readConfig = function (){
return new Promise((resolve, reject) => {
fs.readFile(`${__dirname}/../../config/config.json`, { encoding: 'utf-8' }, (err, data) => {
if (err) {
reject (err)
} else {
resolve (JSON.parse(data))
}
})
})
}
let saveConfig = function (data){
return new Promise((resolve, reject) => {
fs.writeFile(`${__dirname}/../../config/config.json`,JSON.stringify(data, null, 2), { encoding: 'utf-8' }, (err) => {
if (err) {
reject (err)
} else {
resolve ()
}
})
})
}
问题内容
使用port方法请求/initialization
跳转到/sign-in
之后,登录页面不能加载静态资源文件,如jquery.js
等
但是手动刷新页面之后就正常了
我的发现
修改路由的代码,将saveConfig(data)
方法注释掉就正常工作。
router.post('/initialization', (req, res, next) => {
readConfig().then(data => {
data.initialized = true
// return saveConfig(data)
}).then(() => {
res.redirect('sign-in')
}).catch(err => {
next(err)
})
})
我试过直接调用fs.writeFileSync
修改config.json
仍然不管用
有遇见过类似问题的朋友么,非常感谢给予帮助!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我也不知道为什么,它自己又好了,可能是其他原因