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');
(使用var
或let
也可以,但我会在这里推荐const
)。
所以只需删除本地的node_modules
文件夹,然后通过安装您想要的其他模块再次运行此代码,它会运行良好!
希望这会有所帮助:)
【讨论】:
以上是关于Webpack nodejs fs.readFile 不是函数的主要内容,如果未能解决你的问题,请参考以下文章