javascript - fs'i 'fs' modülünden import etmek
JavaScript'te import fs from 'fs' kullanmak istiyorum. İşte bir örnek:
import fs from 'fs'
var output = fs.readFileSync('someData.txt')
console.log(output)
Dosyamı node main.js kullanarak çalıştırdığımda aldığım hata şudur:
(function (exports, require, module, __filename, __dirname) { import fs from 'fs
'
^^^^^^
SyntaxError: Unexpected token import
Diğer yerlerden modülleri ve fonksiyonları ithal edebilmek için Node.js'e ne yüklemeliyim?
Cevap #1
Varsayılan ihracatlar için şunu kullanmalısınız:
import * as fs from 'fs';
Veya modülün isimlendirilmiş ihracatlara sahip olması durumunda:
import {fs} from 'fs';
Örnek :
//module1.js
export function function1() {
console.log('f1')
}
export function function2() {
console.log('f2')
}
export default function1;
Ve sonra:
import defaultExport, { function1, function2 } from './module1'
defaultExport(); // This calls function1
function1();
function2();
Ayrıca, ES6 import kullanabilmek için Webpack veya benzeri bir şey kullanmalısınız
Cevap #2
Node.js'de ES6 modülleri desteği oldukça yenidir; en son sürümlerde bile hala deneysel durumdadır. Node.js 10 ile, Node.js'i --experimental-modules bayrağı ile başlatabilirsiniz ve muhtemelen çalışacaktır.
Eski Node.js sürümlerinde veya standart Node.js 10'da içe aktarmak için CommonJS sözdizimini kullanın:
const fs = require('fs');
Cevap #3
RobertoNovelo'nun cevabı üzerine inşa ederek:
import * as fs from 'fs';
şu anda bunu yapmanın en basit yolu.
Bir Node.js projesi (Node.js v10.15.3) ile test edildi, esm ile, import kullanılmasına izin veriyor.
Cevap #4
import { readFileSync } from 'fs' kullanabilmek için şunları yapmalısınız:
- Node.js 10 veya daha yeni bir sürümü kullanıyor olmak
--experimental-modulesbayrağını kullanın (Node.js 10'da), örn.node --experimental-modules server.mjs(.mjs açıklaması için bkz. #3)- Dosyanızdaki
importifadeleri bulunan dosyanın dosya uzantısını.mjsolarak değiştirin, .js çalışmaz, örn. server.mjs
Diğer cevaplar 1 ve 2'yi vurguladı, ama 3 de gerekli. Ayrıca, bu özelliğin şu anda son derece deneysel (1/10 kararlılık) olarak değerlendirildiğini ve üretim için önerilmediğini not edin, ama yine de muhtemelen kullanacağım.
İşte Node.js 10 ESM dokümantasyonu.
Cevap #5
package.json dosyasına gidin ve şunu ekleyin:
"type": "module"
Bu benim için işe yaradı!
Cevap #6
2023 yılı, Mevcut sürümde node 16+:
import {readFileSync} from "fs"
const string_output = readFileSync("path-to-file", 'utf8')
// the rest
İkinci argümanı, 'utf8' kodlamasını vermezseniz, ikili bir dosya döndürecektir
