Webpack nodejs fs.readFile不是一个函数

时间:2016-05-19 09:35:44

标签: node.js webpack fs

我有一个webpack配置,如:

MVP

我想使用var path = require('path') module.exports = { entry: "./index.js", output: { path: path.join(__dirname, 'static'), filename:'bundle.js' }, module: { loaders: [ { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader"}, { test: /\.json$/, loader: 'json-loader' }, ] }, node: { fs: "empty" } };

读取文件

我正在做类似的事情:

fs

我只是想在这里阅读一个文件,但是当我这样做时,它给了我错误的说法:

  

var fs = require('fs') console.log(fs) fs.readFile('input.txt', function (err, buffer) { console.log("buffer") console.log(buffer) }) 不是函数

我使用fs.readFile

安装了fs

当我打印npm install --save fs时,它会给我空对象。 上面我已经完成fs它给了我空对象

这里有什么问题?

2 个答案:

答案 0 :(得分:1)

您的代码看起来不错!因此,代码没有错。要进行交叉验证,请尝试在此处https://www.tutorialspoint.com/execute_nodejs_online.php运行相同的代码,您会发现console.log(fs);不会为空。

因此,代码显示错误的原因是因为您使用命令npm install --save fs安装了名为'fs'的节点模块,您不应该这样做!默认情况下,Node附带此模块。您所要做的只是使用const fs = require('fs');(也可以使用varlet,但我会在这里推荐const)。

因此,只需删除本地node_modules文件夹,然后通过安装所需的其他模块来再次运行此代码,它将正常运行!

希望这会有所帮助:)

答案 1 :(得分:1)

我相信评论中提到的

node: { fs: "empty" }

需要删除。 此外,所有代码都必须在服务器上运行。您无法在浏览器中读取此类文件。节点API仅在服务器端,因此您需要使用Express或一些类似的库来构建API 例如

    router.get('/file/read', (req, res, next) => { fs.readFile('input.txt', function (err, buffer) {
            console.log("buffer")
            res.send(buffer);
        }) 
    })

然后,在您的浏览器中,您将需要使用AJAX来调用API并检索文件内容。

读取任意文件具有明显的安全问题。您不应允许api读取用户喜欢的任何文件。在这里您应该非常小心,以限制输入并限制可用的文件集。