node js embedded 8.6 не поддерживаются модули, какие варианты



  • версия node js с Бас 8.6(2017 release) не поддерживает некоторые npm модули,
    какой вариант лучше чтобы запустить скрипт?

    заменить на более старые версии вариант понятно не рассматриваем.

    если купить премиум возможно ли перекомпилировать на свежую версию?



  • генераторы не поддерживаются например



  • @jason Просто на всякий случай, если пишите в продакшен, то код node остается открытым.

    @jason said in node js embedded 8.6 не поддерживаются модули, какие варианты:

    если купить премиум возможно ли перекомпилировать на свежую версию?

    Вы сможете получить доступ к исходникам, а там уж на что горазды

    @jason said in node js embedded 8.6 не поддерживаются модули, какие варианты:

    генераторы не поддерживаются например

    Ага, я переписывал код из-за этого как-то )



  • @jason said in node js embedded 8.6 не поддерживаются модули, какие варианты:

    генераторы не поддерживаются например

    Кстати еще можно попробовать через babel прогнать



  • @UserTrue said in node js embedded 8.6 не поддерживаются модули, какие варианты:

    Вы сможете получить доступ к исходникам, а там уж на что горазды

    Та там не сильно страшно, геморойнее среду собрать



  • у меня был премиум но там усеченная версия,
    и я не уверен что node можно будет обновить.



  • сейчас нпм модули не поддерживают 8.6
    бабель уже давно неактуален тоже потому что все поддерживается нодой нативно.





  • временное решение
    чтобы запустить скрипт

    используем typescript(babel мы оставили в 2017)

    в tsconfig пишем 2017 :)
    "lib": ["es2017"],
    "module": "commonjs",
    "target": "es2017",

    используем gulp
    gulp npm(2 tasks, one for js,ts, another for other files)

    gulp.task('ts-npm', function() {
    var tsResult = gulp
    .src(['node_modules/got//*.{ts,js}', '!node_modules//node_modules/'], { base: '.' })
    .pipe(sourcemaps.init())
    .pipe(tsProject_npm())
    return tsResult.js.pipe(sourcemaps.write(), { base: '.' }).pipe(gulp.dest(outDirBase))
    })
    gulp.task('cp-npm', function() {
    return gulp.src([node_modules/got/**/*, '!node_modules/got/
    /*.{ts,js}', '!node_modules//node_modules/'], { base: '.' }).pipe(gulp.dest(outDirBase))
    })
    gulp.task('npm', gulp.series('ts-npm', 'cp-npm'))



  • @jason got -ом балуетесь А компилировать как будете? Скрипт потом gulp на новой машине найдет?



  • смотрите,

    у меня везде идет использование typescript,
    на клиентской машине я устанавливаю cygwin и все остальное,

    проект состоит условно из 2х частей,
    remote client js (node 8.6)
    и другой части,
    которую я обычно не компилирую а запускаю сразу ts.

    когда я что-то изменяю в клиентской части то идет рекомпиляция и
    синхронизация с win10 сервером.

    gulp на удаленной машине не нужен потому что некоторые библиотеки приходится добавлять
    отдельно и они синхронизируются(rsync) сразу в папку node_modules(поверх) на удаленной машине.
    это все gulp задачи поэтому весь проект запускаетя
    gulp watch
    и дальше работает.
    так
    [19:49:40] Starting 'build-sync'...
    [19:49:40] Starting 'build'...
    [19:49:40] Starting 'ts'...
    [19:49:40] Starting 'cp-yml'...
    [19:49:40] Starting 'cp-root'...
    [19:49:41] Finished 'cp-yml' after 882 ms
    [19:49:41] Finished 'cp-root' after 891 ms
    [19:49:45] Finished 'ts' after 5.28 s
    [19:49:45] Finished 'build' after 5.28 s
    [19:49:45] Starting 'sync'...
    [19:49:46] Finished 'sync' after 546 ms
    [19:49:46] Finished 'build-sync' after 5.83 s

    в данном случае build-sync это полный rebuild всего и синхронизация.
    если просто пересохранить файл то сразу идет recompile & sync для одного файла.

    это конечно "дичь полная", но копаться в API не хочется потому что там нет поддержки современного стэка типа pupeeter итд, а идет передача js функций в виде стринга для местного джс интерпретатора, насколько я понимаю, там ключевые части в коде закрыты и поэтому я не стал ничего допиливать итд.
    пробовал экспериментировать но там непонятно, документации по internal нет и сама программа не выдает ошибок часто и крашится.



  • последний got на typescript,
    мне это очень удобно поэтому я не стал откатывать на старую версию.

    еще кстати насчет старой версии ноды и старых библиотек,
    там полно memory leaks,
    просто у вас скрипт будет работать медленно,
    тормозить потом и вероятно вы не найдете где ошибка,

    и поэтому в новой got не нужно гуглить примеры и запускать кучу тестов как например отправит json запрос через прокси с http basic auth.



  • @jason А понятно. Но это сгодится только для вас, в продакшене не каждый руками поставит. Да и покупатели часто не знают чо и как с этим быть. Но за идею реализации спасибо. Сам люблю себе написать чонибудь этакое.



  • это чисто для разработки 100проц),
    просто мне проще сделать комфорт сразу потратить день или два

    все красиво итд,
    moca test, цветные логи(stdout/stderr) с ноды в файл

    получается что процесс разработки всегда идет,
    и что то добавляешь итд

    потом когда проект становится сложней то все это идет уже в плюс и скорость разработки растет.

    а поначалу да, конечно проще набросать из блоков визуально и типа работает за 5 мин я сделал регистратор акков, сам регит скачивает прокси итд.

    в этом большой плюс Бас, здесь нулевой порог входа.



  • @jason Если хотите я в личку вам могу curlwrapper скинуть только там надо будет еще libssl и libssh докидывать. Поиграетесь. этот курл не уступает в понятливости got -у) форматы жрет все что даш.



  • мне проще все на ноде делать,
    если например там даже скриншот сайта сделать быстро или какие то простые действия где не надо прокси отпечатков итд, то chrome headless через pupeeter запустить.



  • @jason Вы все равно доберетесь до продакшена, рано или поздно



  • you have to add on top

    import 'stream.pipeline-shim/auto'
    for stream API to be supported(stream.pipeline ...etc)


Log in to reply
 

  • 3
  • 5
  • 4
  • 18
  • 10
  • 4
  • 11
  • 2