【问题标题】:Webpack nodejs fs.readFile is not a functionWebpack nodejs fs.readFile 不是函数
【发布时间】:2016-09-16 02:27:13
【问题描述】:

我有一个 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"
    }
};

我想使用fs读取文件

我正在做类似的事情:

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

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


    })

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

fs.readFile 不是函数

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

当我打印fs 时,它也会给我一个空对象。 上面我已经完成了console.log(fs) 它给了我一个空对象

这里有什么问题?

【问题讨论】:

  • 删除node: { fs: "empty" }并添加target: 'node'webpack.github.io/docs/configuration.html#target
  • 这给了我进程未定义错误
  • 您试图从浏览器运行此代码?在浏览器中,显然没有对文件系统的任何访问。
  • 这意味着我应该启动一个开发服务器??
  • fs 模块是节点的一部分。你不应该安装它。

标签: node.js webpack fs


【解决方案1】:

我相信cmets提到的,

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 读取用户喜欢的任何文件。您应该非常小心地限制输入并限制可用的文件集。

【讨论】:

    【解决方案2】:

    您的代码看起来不错!所以代码没有问题。要交叉验证,请尝试在 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 文件夹,然后通过安装您想要的其他模块再次运行此代码,它会运行良好!

    希望这会有所帮助:)

    【讨论】:

      猜你喜欢
      • 2019-05-10
      • 1970-01-01
      • 2021-12-30
      • 2016-05-04
      • 1970-01-01
      • 2019-02-06
      • 2020-02-21
      • 2018-08-14
      • 2020-07-06
      相关资源
      最近更新 更多