Webpack nodejs fs.readFile 不是函数

Posted

技术标签:

【中文标题】Webpack nodejs fs.readFile 不是函数【英文标题】:Webpack nodejs fs.readFile is not a function 【发布时间】: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 模块是节点的一部分。你不应该安装它。 【参考方案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 文件夹,然后通过安装您想要的其他模块再次运行此代码,它会运行良好!

希望这会有所帮助:)

【讨论】:

以上是关于Webpack nodejs fs.readFile 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

在 nodejs 的服务器端使用 webpack

Typescript + webpack(带热重载)+ NodeJS

nodejs+webpack+vue之webpack

webpack升级后找不到命名空间NodeJS

Webpack 入门

请教关于webpack压缩nodejs代码的问题