首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用文件系统和Express.js读写文件

用文件系统和Express.js读写文件
EN

Stack Overflow用户
提问于 2017-07-01 18:05:53
回答 2查看 5.6K关注 0票数 0

我是express.js的新手,我正在使用它作为我的NodeJS后端,提供一个标准的网页。

在我的express的app.js文件中,我有通常的节点依赖项,但我也包含了文件系统。

虽然我提供的是一个典型的网页,但我希望能够访问fs的读/写功能。我已经在我的express app.js文件中包含了这些函数,但是我似乎无法从我的网页的js文件中调用它们。我想这是某种继承/范围问题吧?

代码语言:javascript
运行
复制
var http = require('http');
var https = require('https');
var express = require('express');
var app = express();

var path = require('path');
var fs = require('file-system');
var helmet = require('helmet');
app.use(helmet());

[…]

app.use(express.static('../myWebpage/'));

app.get('/', function (req, res) {
    res.sendFile(path.join(__dirname + '/../myWebpage/'));
    // res.send('Get Request!')
})

[…]

function readFile( url ){
    fs.readFile(url, 'utf8', function( err, data ){
        if ( err ) {
            console.log( 'error', err );
        } else {
            console.log('file read');
            return data;
        }
    });
}

function saveFile( url, body ){
    fs.writeFile(url, body, (err) => {
        if (err) {
            console.log('Error saving');
            throw err;
        } else {
            console.log('It\'s saved!');
        }
    });
}

这里的要点是,我试图从myWebpage/js文件中调用read/文件函数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-02 00:20:44

博士你不能

据我所知,您正在尝试从您的前端js文件调用读取/保存函数,该函数是从myWebpage文件夹中提供的。如果有这种透明度,这是不可能的。

问题是,运行在服务器上后端node.js环境中的js文件与客户端计算机上浏览器中运行的前端javascript是隔离的。只有通过HTTP调用才能进行通信。

为了做到这一点,您需要创建一个可以从客户端到达的路由。此外,您还需要通过查询字符串传递参数: /save?url=path

代码语言:javascript
运行
复制
app.get('/read', function(request, response) {
  readFile(request.query.url);
})

保存路由有点复杂,因为它需要使用post请求。首先,您需要使用体解析器中间件来解析主体参数:app.use(bodyParser.urlencoded());

其次,您需要创建保存路由。

代码语言:javascript
运行
复制
app.post('/save', function(request, response) {
  saveFile(request.query.url, request.body.body);
});

在客户端js文件中,您需要通过xhr:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest的请求将get/post发送到此路由。

票数 1
EN

Stack Overflow用户

发布于 2017-07-01 19:14:24

在您的代码中有一个小错误。

代码语言:javascript
运行
复制
var fs = require('file-system'); // wrong way
var fs = require('fs'); // right way

您可以通过以下方式导入fs模块。

Sample express.js code

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44863980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档