[英]NoCredentialProviders: no valid providers in chain error in electron-updater with AWS S3
I'm trying to implement autoupdate of my electron-react application using electron-updater and AWS S3 bucket.我正在尝试使用电子更新器和 AWS S3 存储桶实现我的电子反应应用程序的自动更新。 But getting error:
但出现错误:
⨯ NoCredentialProviders: no valid providers in chain. Deprecated.
For verbose messaging see aws.Config.CredentialsChainVerboseErrors
github.com/develar/app-builder/pkg/publisher.upload
Y:/Documents/app-builder/pkg/publisher/s3.go:169
github.com/develar/app-builder/pkg/publisher.ConfigurePublishToS3Command.func1
Y:/Documents/app-builder/pkg/publisher/s3.go:57
github.com/alecthomas/kingpin.(*actionMixin).applyActions
C:/Users/develar/go/pkg/mod/github.com/alecthomas/kingpin@v2.2.6+incompatible/actions.go:28
github.com/alecthomas/kingpin.(*Application).applyActions
C:/Users/develar/go/pkg/mod/github.com/alecthomas/kingpin@v2.2.6+incompatible/app.go:557
github.com/alecthomas/kingpin.(*Application).execute
C:/Users/develar/go/pkg/mod/github.com/alecthomas/kingpin@v2.2.6+incompatible/app.go:390
github.com/alecthomas/kingpin.(*Application).Parse
C:/Users/develar/go/pkg/mod/github.com/alecthomas/kingpin@v2.2.6+incompatible/app.go:222
main.main
Y:/Documents/app-builder/main.go:90
runtime.main
c:/go/src/runtime/proc.go:203
runtime.goexit
c:/go/src/runtime/asm_amd64.s:1373
⨯ NoCredentialProviders: no valid providers in chain. Deprecated.
For verbose messaging see aws.Config.CredentialsChainVerboseErrors
github.com/develar/app-builder/pkg/publisher.upload
Y:/Documents/app-builder/pkg/publisher/s3.go:169
github.com/develar/app-builder/pkg/publisher.ConfigurePublishToS3Command.func1
Y:/Documents/app-builder/pkg/publisher/s3.go:57
github.com/alecthomas/kingpin.(*actionMixin).applyActions
C:/Users/develar/go/pkg/mod/github.com/alecthomas/kingpin@v2.2.6+incompatible/actions.go:28
github.com/alecthomas/kingpin.(*Application).applyActions
C:/Users/develar/go/pkg/mod/github.com/alecthomas/kingpin@v2.2.6+incompatible/app.go:557
github.com/alecthomas/kingpin.(*Application).execute
C:/Users/develar/go/pkg/mod/github.com/alecthomas/kingpin@v2.2.6+incompatible/app.go:390
github.com/alecthomas/kingpin.(*Application).Parse
C:/Users/develar/go/pkg/mod/github.com/alecthomas/kingpin@v2.2.6+incompatible/app.go:222
main.main
Y:/Documents/app-builder/main.go:90
runtime.main
c:/go/src/runtime/proc.go:203
runtime.goexit
c:/go/src/runtime/asm_amd64.s:1373
⨯ Cannot cleanup:
Error #1 --------------------------------------------------------------------------------
Error: D:\directoryofmyapp\myappname\node_modules\app-builder-bin\win\x64\app-builder.exe exited with code ERR_ELECTRON_BUILDER_CANNOT_EXECUTE
at ChildProcess.<anonymous> (D:\directoryofmyapp\myappname\node_modules\builder-util\src\util.ts:243:14)
at Object.onceWrapper (events.js:422:26)
at ChildProcess.emit (events.js:315:20)
at maybeClose (internal/child_process.js:1048:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5)
Error #2 --------------------------------------------------------------------------------
Error: D:\directoryofmyapp\myappname\node_modules\app-builder-bin\win\x64\app-builder.exe exited with code ERR_ELECTRON_BUILDER_CANNOT_EXECUTE
at ChildProcess.<anonymous> (D:\directoryofmyapp\myappname\node_modules\builder-util\src\util.ts:243:14)
at Object.onceWrapper (events.js:422:26)
at ChildProcess.emit (events.js:315:20)
at maybeClose (internal/child_process.js:1048:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5) stackTrace=
Here is my package.json:这是我的 package.json:
{
"name": "myappname",
"version": "0.1.0",
"private": true,
"license": "MIT",
"productName": "myappname",
"author": "Bakhrom",
"description": "myappname",
"homepage": "./",
"main": "./public/electron.js",
"build": {
"appId": "com.myappname.electron-app",
"files": [
"build/electron.js",
"build/.env",
"./~/.aws/credentials",
"~/.aws/credentials",
"./.env",
".env"
],
"directories": {
"buildResources": "./public/**/*"
},
"win": {
"icon": "./public/img/favicon.png"
},
"publish": {
"provider": "s3",
"bucket": "mybucketname",
"region": "ap-southeast-1"
}
},
"dependencies": {
"@fluentui/react": "^7.146.0",
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.3.2",
"@testing-library/user-event": "^7.1.2"
"electron-is-dev": "^1.2.0",
"electron-pos-printer": "^1.2.0",
"electron-updater": "^4.3.5",
... other packages
},
"scripts": {
"start": "react-scripts start",
"build": "node --expose-gc --max-old-space-size=1900 node_modules/react-scripts/scripts/build.js",
"test": "react-scripts test",
"dev": "concurrently \"npm start\" \"wait-on http://localhost:3000 && electron .\"",
"electron-build": "npm run build && electron-builder build",
"deploy": "npm run build && electron-builder build --win --publish always",
"postinstall": "electron-builder install-app-deps"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"concurrently": "^5.3.0",
"dotenv": "^8.2.0",
"electron": "^9.1.0",
"electron-builder": "^22.9.1",
"electron-rebuild": "^2.3.2",
"wait-on": "^5.2.1"
}
}
I'm running the command below:我正在运行以下命令:
"deploy": "npm run build && electron-builder build --win --publish always"
The bucket is public.存储桶是公开的。 I can't figure out what is going on?
我不知道发生了什么事? I also mentioned aws_access_key_id and aws_secret_access_key in environment variables and ~/.aws/credentials file.
我还在环境变量和 ~/.aws/credentials 文件中提到了 aws_access_key_id 和 aws_secret_access_key。 But no result.
但没有结果。
As per the official documentation, you need to have something like this S3Options根据官方文档,你需要有这样的东西S3Options
AWS credentials are required, please see getting your credentials.
需要 AWS 凭证,请参阅获取您的凭证。 Define
AWS_ACCESS_KEY_ID
andAWS_SECRET_ACCESS_KEY
environment variables.定义
AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
环境变量。 Or in the~/.aws/credentials
.或在
~/.aws/credentials
中。
"build":
"publish": {
"provider": "s3",
"bucket": "bucket-name"
}
}
}
You export secrets into windows environment:您将机密导出到 windows 环境中:
setx AWS_ACCESS_KEY_ID AKIAIOSFODNN7EXAMPLE
setx AWS_SECRET_ACCESS_KEY wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
setx AWS_DEFAULT_REGION us-west-2
You don't have to make the bucket Public
unless you want to.除非您愿意,否则您不必将存储桶设为
Public
。 Make sure the User's
credentials you are using, have the following permissions at least to access the bucket:确保您使用的
User's
凭证至少具有以下访问存储桶的权限:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:AbortMultipartUpload",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:GetObjectVersion",
"s3:ListMultipartUploadParts",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::bucketName/*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::bucketName"
}
]
}
On the side note why you are bundling your credentials files附注为什么要捆绑凭据文件
"./~/.aws/credentials",
"~/.aws/credentials",
Double-check the format of your ~/.aws/credential file.仔细检查 ~/.aws/credential 文件的格式。
For example in AWS SDK for JavaScript correctly work with uppercase and lowercase params:例如,在 AWS SDK 中,JavaScript 可以正确使用大写和小写参数:
[profile]
AWS_ACCESS_KEY_ID=
or
[profile]
aws_access_key_id=
But in AWS SDK for Go correctly work only lowercase params:但在 AWS SDK 中,Go 只能正确工作小写参数:
[profile]
aws_access_key_id=
aws_secret_access_key=
Electron-builder used AWS SDK for Go in deployments. Electron-builder 在部署中将 AWS SDK 用于 Go。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.