私は次のような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)
を実行しましたが、空のオブジェクトを取得しています
ここで何が問題になっていますか?
コードは正常に見えます!したがって、コードに問題はありません。クロス検証するには、ここで同じコードを実行してみてください 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
_フォルダーを削除してから、必要な他のモジュールをインストールしてこのコードを再度実行すると、問題なく実行されます。
お役に立てれば :)
私が述べたコメントを信じているように、
node: { fs: "empty" }
削除する必要があります。さらに、すべてのコードはサーバー上で実行する必要があります。このようなファイルをブラウザーで読み取ることはできません。 Node APIはサーバー側のみであるため、エクスプレスまたは類似のライブラリを使用してAPIを構築する必要があります。
router.get('/file/read', (req, res, next) => { fs.readFile('input.txt', function (err, buffer) {
console.log("buffer")
res.send(buffer);
})
})
次に、ブラウザでAJAXを使用してAPIを呼び出し、ファイルの内容を取得する必要があります。
任意のファイルを読み取るにはOBVIOUS SECURITY ISSUESがあります。ユーザーが好きなファイルをAPIに読み取らせないでください。ここでは、入力を制限し、使用可能なファイルのセットを制限するように、非常に注意する必要があります。