Проблема
В том, что функция Node не определена при использовании Electron или не принимает определенный параметр, даже если она отлично работает с вашей локальной установкой Node, может произойти, когда версия узла, которую поддерживает Electron, старшечем ваша локальная установка Node.
Узнайте версию, которую вы используете
Хорошее первое начало - это посмотреть, когда рассматриваемая функция была добавлена в Node.Вы можете сделать это, посмотрев документацию Node.js .Вы найдете таблицу истории прямо под именем функции в раскрывающемся блоке.
![Node.js History Table](https://i.stack.imgur.com/DRKXv.jpg)
Здесь мы видим, что scryptSync
был добавлен в Узел 10.5.0.
Если вы не знаете, какую версию Node поддерживает ваша установка Electron, вы можете запустить с Electron следующее:
console.log(process.versions)
Вы должны найтииспользованная версия Node в выводе.Например, для Electron 3.1.4 он должен выглядеть следующим образом:
{ http_parser: '2.8.0',
node: '10.2.0',
v8: '6.6.346.32',
uv: '1.20.3',
zlib: '1.2.11',
ares: '1.14.0',
modules: '64',
nghttp2: '1.29.0',
napi: '3',
openssl: '1.1.0h',
electron: '3.1.4',
chrome: '66.0.3359.181' }
Для сравнения приведен вывод моей установки Electron 4.0.2:
{ http_parser: '2.8.0',
node: '10.11.0',
v8: '6.9.427.24-electron.0',
uv: '1.23.0',
zlib: '1.2.11',
ares: '1.14.0',
modules: '64',
nghttp2: '1.33.0',
napi: '3',
openssl: '1.1.0',
electron: '4.0.2',
chrome: '69.0.3497.106',
icu: '62.1',
unicode: '11.0',
cldr: '33.1',
tz: '2018e' }
Как мы видим Electron 3использует Node 10.2.0.Таким образом, в узле, который Electron использует scryptSync
, еще не реализовано, и поэтому undefined
.
Как решить эту проблему
Вы можете решить эту проблему, если более новая версия Electron, поддерживающая версию NodeВы нуждаетесь, уже выпущено.
Вы можете посмотреть это в Электронных примечаниях к выпуску .До сих пор обновления версии Node были реализованы в основных версиях, так что рассмотрение следующей версии x.0.0 - хорошее начало.
В этом случае нам повезло: Electron 4 поддерживает Node 10.11.0, который реализует scryptSync
.
![Electron release notes for Electron 4.0.0](https://i.stack.imgur.com/SJJxF.jpg)
Таким образом, обновление до последней версии Electron должно решить эту проблему.