@basuser123 said in Постоянный старт node js при запуске скрипта:
походу модуль какой-то.. а как узнать какой?
Самое очевидное решение - отключать поочерёдно модули и смотреть на результат
Подскажите правильно ли я преобразовал код и синхронизировал с bas?
Изначальный вид с синхронным чтением директории:
const fs = require('fs')
const dir = 'C://test//'
function print(dir) {
const result = fs.readdirSync(dir)
return result
}
console.log('result:' + print(dir))
Преобразованный код в асинхронное чтение директории и синхронизированный с bas:
const fs = require('fs')
const dir = 'C://test//'
async function print(dir) {
await (new Promise((resolve, reject) => {
fs.readdir(dir, function (err, dir) {
if (err) { console.log('err') }
[[result]] = dir
resolve()
})
}));
return [[result]]
}
console.log('result:' + await print(dir))
чуть дополнил еще одной функции для проверки.По идее в консоль должно быть пусто,ибо фильтр не пройден.Но фильтр не сработал,и вывелось содержание папки. Что то не так..
const fs = require('fs')
const dir = 'C://test//'
async function print(dir) {
await (new Promise((resolve, reject) => {
fs.readdir(dir, function (err, dir) {
if (err) { console.log('err') }
[[result]] = dir.filter(async (a) => (await filterTest(a)))
resolve()
})
}));
return [[result]]
}
console.log('result:' + await print(dir))
async function filterTest(dir) {
return false
}
const fs = require('fs')
const dir = 'C://test//'
async function print(dir) {
return await (new Promise((resolve, reject) => {
fs.readdir(dir, function (err, dir) {
if (err) { console.log('err') }
resolve(dir)
})
}));
}
console.log('result:' + await print(dir))
Функция фильтр не работает с асинхронным калбэком, используйте обычный цикл
и у модуля fs, есть вариант на промисах
const fs = require('fs').promises
const dir = 'C://test//'
async function print(dir) {
try {
return fs.readdir(dir)
} catch (e) {
console.log(e)
}
}
console.log('result:' + await print(dir))
Спасибо,все работает. Жаль,что стрелочными функциями не воспользоватся,так код компакнее)
@markinaras используйте стрелочные функции, кто сказал, что нельзя)