Webpack nodejs fs.readFile不是一个函数

gam*_*mer 17 fs node.js webpack

我有一个webpack配置,如:

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"
    }
};
Run Code Online (Sandbox Code Playgroud)

我想用文件阅读文件 fs

我做的事情如下:

var fs = require('fs')
console.log(fs)

fs.readFile('input.txt', function (err, buffer) {
        console.log("buffer")
        console.log(buffer)


    })
Run Code Online (Sandbox Code Playgroud)

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

fs.readFile 不是一个功能

我已经安装fs使用npm install --save fs

另外,当我打印fs它给我空对象.我上面做的console.log(fs)就是给我空物

这里有什么问题?

Bre*_*enn 4

正如我相信所提到的评论,

node: { fs: "empty" }
Run Code Online (Sandbox Code Playgroud)

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

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

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

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