我有一个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
它给了我空对象
这里有什么问题?
答案 0 :(得分:1)
您的代码看起来不错!因此,代码没有错。要进行交叉验证,请尝试在此处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
文件夹,然后通过安装所需的其他模块来再次运行此代码,它将正常运行!
希望这会有所帮助:)
答案 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读取用户喜欢的任何文件。在这里您应该非常小心,以限制输入并限制可用的文件集。