小白开始学习前端全栈之node的文件操作的路径问题

2015-08-23 22:00:00
hainuo
原创 1997
摘要:nodejs中操作对路径有严格要求,否则将无法正确读取文件,但是在facebook制作的server.js中有这样的写法
# 表象> 根据代码中所表示,应该是以public为根路径,然后`comments.json`的路径 **也在`public`目录下** 。`server.js`与`public`目录在同一目录下# 问题> `get`时`comments.json`的路径是在public下面,但是`pos`t时,`comment.json`的路径竟然与`public`目录同一层级# 解决办法> 在post的方法中统一增加public目录层级。# 修正后的代码```nodejs/** * This file provided by Facebook is for non-commercial testing and evaluation * purposes only. Facebook reserves all rights not expressly granted. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */var fs = require('fs');var path = require('path');var express = require('express');var bodyParser = require('body-parser');var app = express();app.set('port', (process.env.PORT || 3000));app.use('/', express.static(path.join(__dirname, 'public')));app.use(bodyParser.json());app.use(bodyParser.urlencoded({extended: true}));app.get('/comments.json', function(req, res) { fs.readFile('comments.json', function(err, data) { res.setHeader('Cache-Control', 'no-cache'); res.json(JSON.parse(data)); });});app.post('/comments.json', function(req, res) { fs.readFile('public/comments.json', function(err, data) { var comments = JSON.parse(data); console.log(data); comments.push(req.body); console.log(comments) fs.writeFile('public/comments.json', JSON.stringify(comments, null, 4), function(err) { res.setHeader('Cache-Control', 'no-cache'); res.json(comments); }); });});app.listen(app.get('port'), function() { console.log('Server started: http://localhost:' + app.get('port') + '/');});```
发表评论
肆 加 壹 =
评论通过审核后显示。