Вот команды, которые мы запускаем после установки npm (или после обновления электронного или узлового сериального).
на Mac
rm -rf node_modules/serialport/build/*
node_modules/.bin/electron-rebuild -w serialport -f
ls node_modules/serialport/build/Release
на Win
rmdir /S /Q node_modules\serialport\build\
node_modules\.bin\electron-rebuild -w serialport -f
dir node_modules\serialport\build\Release
Корневая проблема в том, что узел-SerialPort является собственный модуль, так что вы должны скомпилировать его или использовать предварительно построенная версия, соответствующая вашей версии узла. Но ожидаемая версия узла-электрона часто (почти всегда) отличается от версии узла, установленного вами глобально. Когда вы перестраиваете node-serialport, вам нужно настроить таргетинг на версию узла, которая electronic ожидает. К счастью, electron-rebuild имеет дело с этим. Установите его и запустите его, как указано выше. Он определит, какую версию электрона вы используете (при условии, что вы не скрываете его в каком-то неожиданном месте).
Еще одна проблема, с которой мы справились, - это то, что вам необходимо вручную удалить артефакты сборки, прежде чем запускать электрон-rebuild, иначе он не будет генерировать новые артефакты. Возможно, это было исправлено с тех пор, как я в последний раз смотрел на это.
Я включаю прямое перечисление в качестве третьей команды, поэтому я вижу некоторый вывод, который заверяет меня, что файлы были сгенерированы.
Наше решение было основано на длинном обсуждении по этому вопросу в выпуске node-serialport. Вам не нужно читать, но если вы начнете здесь https://github.com/EmergingTechnologyAdvisors/node-serialport/issues/538#issuecomment-273927595, где они говорят:
Я думаю, что этот вопрос должен быть закрыт, не так ли? Это не проблема, не были долгое время причиной того, что node-serialport работает просто отлично с Electron.
Основная проблема заключается в том, что Electron, каждый, кто начнет использовать . Электрон будет иметь проблемы с собственными модулями, и большинство проблем в этом потоке - это получение рабочих модулей.
... и затем выпуск закрыт.