【问题标题】:Failed to install Realm on my ReactNative app ; with: npm ERR! Failed at the realm@3.6.0 install script 'node-pre-gyp install --fallback-to-build'在我的 ReactNative 应用程序上安装 Realm 失败;与:npm 错误!在领域@3.6.0 安装脚本“node-pre-gyp install --fallback-to-build”失败
【发布时间】:2020-04-13 14:45:40
【问题描述】:

我正在尝试使用 npm 为我的 React Native 应用程序安装 Realm。但是,我无法让它成功。

我的环境/设置是:

  • Windows 10
  • Node.js v12.13.0
  • npm v6.13.0

我一直在尝试使用这个命令:
npm install --save realm

或指定版本号:
npm install --save realm@3.6.0

但一点运气都没有。以下错误信息总是提示给我,没有明确的提示:

> realm@3.6.0 install C:\Projects\<ProjectFolder>\node_modules\realm
> node-pre-gyp install --fallback-to-build

node-pre-gyp WARN Using request for node-pre-gyp https download
node-pre-gyp WARN Tried to download(404): https://static.realm.io/node-pre-gyp/3.6.0/realm-v3.6.0-node-v72-win32-x64.tar.gz
node-pre-gyp WARN Pre-built binaries not found for realm@3.6.0 and node@12.13.0 (node-v72 ABI, unknown) (falling back to source compile with node-gyp)
gyp ERR! find VS
gyp ERR! find VS msvs_version not set from command line or npm config
gyp ERR! find VS VCINSTALLDIR not set, not running in VS Command Prompt
gyp ERR! find VS could not use PowerShell to find Visual Studio 2017 or newer
gyp ERR! find VS looking for Visual Studio 2015
gyp ERR! find VS - not found
gyp ERR! find VS not looking for VS2013 as it is only supported up to Node.js 8
gyp ERR! find VS
gyp ERR! find VS **************************************************************
gyp ERR! find VS You need to install the latest version of Visual Studio
gyp ERR! find VS including the "Desktop development with C++" workload.
gyp ERR! find VS For more information consult the documentation at:
gyp ERR! find VS https://github.com/nodejs/node-gyp#on-windows
gyp ERR! find VS **************************************************************
gyp ERR! find VS
gyp ERR! configure error
gyp ERR! stack Error: Could not find any Visual Studio installation to use
gyp ERR! stack     at VisualStudioFinder.fail (C:\Users\<UserName>\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:121:47)
gyp ERR! stack     at C:\Users\<UserName>\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:74:16
gyp ERR! stack     at VisualStudioFinder.findVisualStudio2013 (C:\Users\<UserName>\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:351:14)
gyp ERR! stack     at C:\Users\<UserName>\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:70:14
gyp ERR! stack     at C:\Users\<UserName>\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:372:16
gyp ERR! stack     at C:\Users\<UserName>\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\lib\util.js:54:7
gyp ERR! stack     at C:\Users\<UserName>\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\lib\util.js:33:16
gyp ERR! stack     at ChildProcess.exithandler (child_process.js:302:5)
gyp ERR! stack     at ChildProcess.emit (events.js:210:5)
gyp ERR! stack     at maybeClose (internal/child_process.js:1021:16)
gyp ERR! System Windows_NT 10.0.18362
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\<UserName>\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "configure" "--fallback-to-build" "--module=C:\\Projects\\<ProjectFolder>\\node_modules\\realm\\compiled\\node-v72_win32_x64\\realm.node" "--module_name=realm" "--module_path=C:\\Projects\\<ProjectFolder>\\node_modules\\realm\\compiled\\node-v72_win32_x64" "--napi_version=5" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=node-v72"
gyp ERR! cwd C:\Projects\<ProjectFolder>\node_modules\realm
gyp ERR! node -v v12.13.0
gyp ERR! node-gyp -v v5.0.5
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute 'C:\Program Files\nodejs\node.exe C:\Users\<UserName>\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js configure --fallback-to-build --module=C:\Projects\<ProjectFolder>\node_modules\realm\compiled\node-v72_win32_x64\realm.node --module_name=realm --module_path=C:\Projects\<ProjectFolder>\node_modules\realm\compiled\node-v72_win32_x64 --napi_version=5 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v72' (1)
node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (C:\Projects\<ProjectFolder>\node_modules\realm\node_modules\node-pre-gyp\lib\util\compile.js:83:29)
node-pre-gyp ERR! stack     at ChildProcess.emit (events.js:210:5)
node-pre-gyp ERR! stack     at maybeClose (internal/child_process.js:1021:16)
node-pre-gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5)
node-pre-gyp ERR! System Windows_NT 10.0.18362
node-pre-gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Projects\\<ProjectFolder>\\node_modules\\realm\\node_modules\\node-pre-gyp\\bin\\node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd C:\Projects\<ProjectFolder>\node_modules\realm
node-pre-gyp ERR! node -v v12.13.0
node-pre-gyp ERR! node-pre-gyp -v v0.13.0
node-pre-gyp ERR! not ok
Failed to execute 'C:\Program Files\nodejs\node.exe C:\Users\<UserName>\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js configure --fallback-to-build --module=C:\Projects\<ProjectFolder>\node_modules\realm\compiled\node-v72_win32_x64\realm.node --module_name=realm --module_path=C:\Projects\<ProjectFolder>\node_modules\realm\compiled\node-v72_win32_x64 --napi_version=5 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v72' (1)
npm WARN @typescript-eslint/eslint-plugin@1.13.0 requires a peer of eslint@^5.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN @typescript-eslint/parser@1.13.0 requires a peer of eslint@^5.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN aws-amplify-react-native@2.2.3 requires a peer of graphql@0.13.0 but none is installed. You must install peer dependencies yourself.
npm WARN aws-amplify-react-native@2.2.3 requires a peer of react-native-sound@^0.10.9 but none is installed. You must install peer dependencies yourself.
npm WARN aws-amplify-react-native@2.2.3 requires a peer of react-native-voice@^0.2.6 but none is installed. You must install peer dependencies yourself.
npm WARN react-native-elements@0.19.1 requires a peer of react-native-vector-icons@^4.2.0 but none is installed. You must install peer dependencies yourself.
npm WARN eslint-plugin-react@7.12.4 requires a peer of eslint@^3.0.0 || ^4.0.0 || ^5.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN eslint-plugin-react-native@3.6.0 requires a peer of eslint@^3.17.0 || ^4 || ^5 but none is installed. You must install peer dependencies yourself.
npm WARN react-native-fs@2.16.2 requires a peer of react-native@^0.59.5 but none is installed. You must install peer dependencies yourself.
npm WARN react-native-fs@2.16.2 requires a peer of react-native-windows@^0.57.2 but none is installed. You must install peer dependencies yourself.
npm WARN tsutils@3.17.1 requires a peer of typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.9 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.9: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! realm@3.6.0 install: `node-pre-gyp install --fallback-to-build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the realm@3.6.0 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\<UserName>\AppData\Roaming\npm-cache\_logs\2019-12-21T10_36_02_380Z-debug.log

我遵循了安装旧版本的帖子的建议:
(即Error installing Realm via npm: npm ERR! Failed at the realm@1.2.0 install script 'node-pre-gyp install --fallback-to-build'
,而旧的成功版本系列是 0.x.0(例如 0.14.0),甚至不是 1.xx,与最新的稳定版本 Realm JavaScript v3.6.0 相比,这是一个非常古老的版本。

这里有类似错误消息的讨论想知道这是一个错误:
https://github.com/realm/realm-js/issues/674
https://github.com/realm/realm-js/issues/1924

然后我来到这篇文章,它建议将整个 NodeJS 回退到版本 8.x.x 尝试一下:
Can not install Realm for my React Native App

这是将 Realm 安装到我的 React Native 应用程序的唯一方法吗?当我在安装了 NodeJS v12.13.0 的 Windows 10 环境中进行开发时,我发现回退过程/不同 NodeJS 版本之间的切换是复杂的或仅在 Mac OS/Linux OS 上可行。而且恐怕回退全局 NodeJS 版本可能会产生其他副作用。

【问题讨论】:

    标签: node.js react-native npm realm


    【解决方案1】:

    我在 NPM 上进一步阅读了 Realm 的详细信息:https://www.npmjs.com/package/realm

    有一个声明表明v8或v10的NodeJS是必要的:

    开始

    请参阅我们的文档中的详细说明以使用 Realm Javascript。请注意,目前仅支持 node.js 版本 8 和 10。

    因此,我决定尝试安装一个 package-wise Node v10.x.x,而不是修改全局 NPM 版本(即在项目文件夹中运行 npm install 而不是 npm install -g)。然后尝试再次安装 Realm。它就像魔法一样!

    所以,让我在这里为任何遇到相同情况的人分享这些步骤:

    1. cd 到项目文件夹
    2. 运行npm install node@10.x.x(例如npm install node@10.17.0
    3. 运行npm install --save realm(或指定版本:npm install --save realm@3.6.0

    安装“本地”NodeJS v10的运行结果:

    C:\Projects\<ProjectFolder>>npm install node@10.17.0
    
    > node@10.17.0 preinstall C:\Projects\<ProjectFolder>\node_modules\node
    > node installArchSpecificPackage
    
    + node-win-x64@10.17.0
    added 1 package in 1.715s
    npm WARN @typescript-eslint/eslint-plugin@1.13.0 requires a peer of eslint@^5.0.0 but none is installed. You must install peer dependencies yourself.
    npm WARN @typescript-eslint/parser@1.13.0 requires a peer of eslint@^5.0.0 but none is installed. You must install peer dependencies yourself.
    npm WARN aws-amplify-react-native@2.2.3 requires a peer of graphql@0.13.0 but none is installed. You must install peer dependencies yourself.
    npm WARN aws-amplify-react-native@2.2.3 requires a peer of react-native-sound@^0.10.9 but none is installed. You must install peer dependencies yourself.
    npm WARN aws-amplify-react-native@2.2.3 requires a peer of react-native-voice@^0.2.6 but none is installed. You must install peer dependencies yourself.
    npm WARN react-native-elements@0.19.1 requires a peer of react-native-vector-icons@^4.2.0 but none is installed. You must install peer dependencies yourself.
    npm WARN eslint-plugin-react@7.12.4 requires a peer of eslint@^3.0.0 || ^4.0.0 || ^5.0.0 but none is installed. You must install peer dependencies yourself.
    npm WARN eslint-plugin-react-native@3.6.0 requires a peer of eslint@^3.17.0 || ^4 || ^5 but none is installed. You must install peer dependencies yourself.
    npm WARN react-native-fs@2.16.2 requires a peer of react-native@^0.59.5 but none is installed. You must install peer dependencies yourself.
    npm WARN react-native-fs@2.16.2 requires a peer of react-native-windows@^0.57.2 but none is installed. You must install peer dependencies yourself.
    npm WARN tsutils@3.17.1 requires a peer of typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta but none is installed. You must install peer dependencies yourself.
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.9 (node_modules\fsevents):
    npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.9: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
    
    + node@10.17.0
    added 2 packages from 1 contributor and audited 953911 packages in 19.807s
    
    2 packages are looking for funding.
    Run "npm fund" to find out more.
    

    Realm 3.6.0 安装结果

    C:\Projects\<ProjectFolder>>npm install --save realm@3.6.0
    
    > realm@3.6.0 install C:\Projects\<ProjectFolder>\node_modules\realm
    > node-pre-gyp install --fallback-to-build
    
    node-pre-gyp WARN Using request for node-pre-gyp https download
    [realm] Success: "C:\Projects\<ProjectFolder>\node_modules\realm\compiled\node-v64_win32_x64\realm.node" is installed via remote
    npm WARN @typescript-eslint/eslint-plugin@1.13.0 requires a peer of eslint@^5.0.0 but none is installed. You must install peer dependencies yourself.
    npm WARN @typescript-eslint/parser@1.13.0 requires a peer of eslint@^5.0.0 but none is installed. You must install peer dependencies yourself.
    npm WARN aws-amplify-react-native@2.2.3 requires a peer of graphql@0.13.0 but none is installed. You must install peer dependencies yourself.
    npm WARN aws-amplify-react-native@2.2.3 requires a peer of react-native-sound@^0.10.9 but none is installed. You must install peer dependencies yourself.
    npm WARN aws-amplify-react-native@2.2.3 requires a peer of react-native-voice@^0.2.6 but none is installed. You must install peer dependencies yourself.
    npm WARN react-native-elements@0.19.1 requires a peer of react-native-vector-icons@^4.2.0 but none is installed. You must install peer dependencies yourself.
    npm WARN eslint-plugin-react@7.12.4 requires a peer of eslint@^3.0.0 || ^4.0.0 || ^5.0.0 but none is installed. You must install peer dependencies yourself.
    npm WARN eslint-plugin-react-native@3.6.0 requires a peer of eslint@^3.17.0 || ^4 || ^5 but none is installed. You must install peer dependencies yourself.
    npm WARN react-native-fs@2.16.2 requires a peer of react-native@^0.59.5 but none is installed. You must install peer dependencies yourself.
    npm WARN react-native-fs@2.16.2 requires a peer of react-native-windows@^0.57.2 but none is installed. You must install peer dependencies yourself.
    npm WARN tsutils@3.17.1 requires a peer of typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta but none is installed. You must install peer dependencies yourself.
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.9 (node_modules\fsevents):
    npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.9: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
    
    + realm@3.6.0
    added 62 packages from 32 contributors, removed 1 package and audited 954332 packages in 52.277s
    
    2 packages are looking for funding.
    Run "npm fund" to find out more.
    

    【讨论】:

    • 真的太棒了,对于如此繁琐的问题,这是您能找到的最简单的解决方案。谢谢,真的很好用:)
    • 你刚刚拯救了我的一天。谢谢
    • Node js 是响应本机领域的必要条件。我的意思是我正在使用 react bode 和 mongodb,所以它是相同的。或者我只能使用带有 RN 的领域
    【解决方案2】:

    无论你是全局降级还是本地降级,你都必须降级你的 nodejs 版本,因为 Realm 支持 node v8 到 10 不高于此,所以尝试安装 node 版本更小,例如。 npm i node@8 或 10 而不是 npm i realm --save 它会起作用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-12
      • 1970-01-01
      • 2016-02-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-05
      • 2020-08-03
      • 2019-12-22
      相关资源
      最近更新 更多