我一直在尝试下载sqlite3@4.2.0
,但它一直给我一个错误。以下是尝试运行npm install
时的日志:
npm WARN deprecated node-pre-gyp@0.11.0: Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future
> sqlite3@4.2.0 install /Users/crypthusiast0/Dev/nodejs/auction-flipper/node_modules/sqlite3
> node-pre-gyp install --fallback-to-build
node-pre-gyp WARN Using needle for node-pre-gyp https download
node-pre-gyp WARN Tried to download(403): https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v4.2.0/node-v83-darwin-arm64.tar.gz
node-pre-gyp WARN Pre-built binaries not found for sqlite3@4.2.0 and node@14.17.0 (node-v83 ABI, unknown) (falling back to source compile with node-gyp)
No receipt for 'com.apple.pkg.CLTools_Executables' found at '/'.
No receipt for 'com.apple.pkg.DeveloperToolsCLILeo' found at '/'.
No receipt for 'com.apple.pkg.DeveloperToolsCLI' found at '/'.
gyp: No Xcode or CLT version detected!
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack at ChildProcess.onCpExit (/Users/crypthusiast0/.nvm/versions/node/v14.17.0/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:351:16)
gyp ERR! stack at ChildProcess.emit (events.js:376:20)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:277:12)
gyp ERR! System Darwin 20.4.0
gyp ERR! command "/Users/crypthusiast0/.nvm/versions/node/v14.17.0/bin/node" "/Users/crypthusiast0/.nvm/versions/node/v14.17.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "configure" "--fallback-to-build" "--module=/Users/crypthusiast0/Dev/nodejs/auction-flipper/node_modules/sqlite3/lib/binding/node-v83-darwin-arm64/node_sqlite3.node" "--module_name=node_sqlite3" "--module_path=/Users/crypthusiast0/Dev/nodejs/auction-flipper/node_modules/sqlite3/lib/binding/node-v83-darwin-arm64" "--napi_version=8" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=node-v83"
gyp ERR! cwd /Users/crypthusiast0/Dev/nodejs/auction-flipper/node_modules/sqlite3
gyp ERR! node -v v14.17.0
gyp ERR! node-gyp -v v5.1.0
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute '/Users/crypthusiast0/.nvm/versions/node/v14.17.0/bin/node /Users/crypthusiast0/.nvm/versions/node/v14.17.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js configure --fallback-to-build --module=/Users/crypthusiast0/Dev/nodejs/auction-flipper/node_modules/sqlite3/lib/binding/node-v83-darwin-arm64/node_sqlite3.node --module_name=node_sqlite3 --module_path=/Users/crypthusiast0/Dev/nodejs/auction-flipper/node_modules/sqlite3/lib/binding/node-v83-darwin-arm64 --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v83' (1)
node-pre-gyp ERR! stack at ChildProcess.<anonymous> (/Users/crypthusiast0/Dev/nodejs/auction-flipper/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
node-pre-gyp ERR! stack at ChildProcess.emit (events.js:376:20)
node-pre-gyp ERR! stack at maybeClose (internal/child_process.js:1055:16)
node-pre-gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5)
node-pre-gyp ERR! System Darwin 20.4.0
node-pre-gyp ERR! command "/Users/crypthusiast0/.nvm/versions/node/v14.17.0/bin/node" "/Users/crypthusiast0/Dev/nodejs/auction-flipper/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd /Users/crypthusiast0/Dev/nodejs/auction-flipper/node_modules/sqlite3
node-pre-gyp ERR! node -v v14.17.0
node-pre-gyp ERR! node-pre-gyp -v v0.11.0
node-pre-gyp ERR! not ok
Failed to execute '/Users/crypthusiast0/.nvm/versions/node/v14.17.0/bin/node /Users/crypthusiast0/.nvm/versions/node/v14.17.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js configure --fallback-to-build --module=/Users/crypthusiast0/Dev/nodejs/auction-flipper/node_modules/sqlite3/lib/binding/node-v83-darwin-arm64/node_sqlite3.node --module_name=node_sqlite3 --module_path=/Users/crypthusiast0/Dev/nodejs/auction-flipper/node_modules/sqlite3/lib/binding/node-v83-darwin-arm64 --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v83' (1)
npm WARN node-auction-flipper@0.1.0 No repository field.
npm WARN node-auction-flipper@0.1.0 license should be a valid SPDX license expression
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! sqlite3@4.2.0 install: `node - pre - gyp install--fallback - to - build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the sqlite3@4.2.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! /Users/crypthusiast0/.npm/_logs/2021-06-10T21_46_58_721Z-debug.log
我回头看了一下日志,发现https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v4.2.0/node-v83-darwin-arm64.tar.gz可能是主要原因,因为如果你真的去链接,它会给你这个错误:
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>Q0JKD48B1117QG62</RequestId>
<HostId>0tR6ildiySR62EjZI4DwfeVbxSFIOClQUiIyMCySpd/lficx42uEJ2YU94GtQQvMnF4EENuWH/0=</HostId>
</Error>
我不太确定如何解决这个问题,因为我对Node不是很有经验。js/NPM和安装模块,但是我确实需要node-sqlite3
版本4.2.0
,因为我的VSCode扩展之一依赖于它。我已经找到了node-sqlite
的github repo和4.2.0
源代码。有没有办法解决这个问题或者从源代码编译模块?可能是因为我的节点版本/操作系统不支持它?我以前用过这个,所以我不确定。
我使用的是运行node版本v16的MacBook Air M1(ARM)。3.0和npm版本v7。16.0.
3条答案
按热度按时间rmbxnbpk1#
另一个答案对我的情况没有帮助。另外,我发现简单地使用
yarn
而不是npm
解决了另一个答案提到的问题。然而,这个答案并没有解决主要问题:
您访问的页面不存在(403)https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v4.2.0/node-*******.tar.gz
node-pre-gyp WARN未找到预构建的二进制文件
TL;DR
对我来说,升级到latest
sqlite3
(e。例如通过yarn add "sqlite3@^5"
(注:this command does not work properly in powershell))修复了此问题。原因是:它会发现这个版本的预构建二进制文件很好。如果你(绝对)需要使用旧版本,你必须确保本地编译成功,如下所述。
除此之外,您还需要确保安装了一个较新版本的
node
,因为通常情况下,预构建的二进制文件通常不会为过期的Node版本提供(检查node -v
;建议:使用volta管理您的节点版本)。警告:当然,这些预构建的二进制文件也可能在不久的将来被软件包作者删除。希望他们至少会用一个更新的版本来替换它们,而不仅仅是让它们完全离线。
说明
上面的错误消息表示
gyp
无法下载系统特定的预构建二进制文件(这与npm
包有很大不同)。因为它找不到预构建的二进制文件,所以它会尝试在本地编译它们,这总是很混乱,很容易出错。npm
包的版本。通常情况下,npm
包的每个主要版本+节点版本+操作系统+指令集体系结构(例如。例如,ARM 32位与x86 64位等似乎出于某种原因,Mapbox决定不长期存储这些预先构建的二进制文件。我相信他们在过去,但版本4。2.0(可能还有很多其他版本),它们现在已经走了。npm
包的最新主要版本保留所有这些不同的二进制文件,并擦除旧版本以保存存储空间。我没有找到任何关于on their repo的文档。gyp:未检测到Xcode或CLT版本!
VS 2017
(也没有它的可再发行版本)。node-gyp
,然后还需要python
和特定于系统的C++编译器。如果你谷歌一下,你会发现很多人成功(和失败)让这样的本地编译工作的故事。目标是本地编译是可能的,但是获得预构建的二进制文件会使事情变得容易得多。sr4lhrrt2#
要修复错误,请尝试以下操作:
由于你没有告诉我们你使用的是哪个版本的node,这可能与没有使用正确的node版本有关,它提到了here,即
node-sqlite3
v4。2.0适用于:所以你可以考虑使用正确版本的nodejs
或者
如果您尝试从源代码手动安装
node-sqlite3 v4.2.0
。这实际上是可能的,正如这里提到的npm docs。只要确保您下载的是tarball文件而不是zip文件,在您的情况下应该是one将tarball移动到它应该在的位置,然后简单地运行以下命令:
或者更简单:
b4wnujal3#
我修正了我的降级节点从14到12。