如何让 Web3js 在 VueJS 组件中工作?
How to get Web3js to work inside a VueJS component?
我想使用带有节点和 vuejs 的 web3 连接到以太坊奇偶校验节点。
- 我正在使用 vue-cli 和 webpack。
- 本地主机上的奇偶校验是 运行ning。
- 当我访问
http://localhost:8545
时,我看到哪个告诉我 Parity 正在监听。
我创建了以下 Vue 组件:
<template>
<div class="hello">
<h1>{{ title }}</h1>
<h2>{{ accounts() }}</h2>
</div>
</template>
<script>
import Web3 from 'web3'
export default {
name: 'hello',
http: {
root: '/root',
headers: {
AccessControlAllowOrigin: 'true'
}
},
data () {
return {
title: 'web3.js App'
}
},
methods: {
accounts: function () {
const ethereumUri = 'http://localhost:8545' // 8540, 8545, 8180
let web3 = new Web3(new Web3.providers.HttpProvider(ethereumUri))
if (!web3.isConnected()) {
return 'Unable to connect to ethereum node at ' + ethereumUri
} else {
let accounts = web3.eth.accounts
return accounts
}
}
}
}
</script>
当我 运行 npm run dev
我得到这个:
在控制台上我看到了这个:
我尝试使用此配置代码添加一个 Access-Control-Allow-Origin header,但它没有修复它。控制台错误似乎表明 Parity 节点需要设置此 header 选项。
http: {
root: '/root',
headers: {
AccessControlAllowOrigin: 'true'
}
},
解决方案是创建一个名为 config.toml
的奇偶校验配置文件。
文件位置:
- Windows: %UserProfile%\AppData\Roaming\Parity\Ethereum\config.toml
- Linux: ~/.local/share/io.parity.ethereum/config.toml
- macOS: $HOME/Library/Application Support/io.parity.ethereum/config.toml
文件内容:
[parity]
# Test Network
chain = "ropsten"
[rpc]
# Allows Cross-Origin Requests from domain '*'.
cors = "*"
# Allow connections only using specified addresses.
hosts = ["", "http://localhost:8080"]
参考:
- 校验配置文件documentation.
- 奇偶校验配置文件 generator。
- 跨源资源共享 (CORS) reference。
谢谢 wostex 的评论。
我想使用带有节点和 vuejs 的 web3 连接到以太坊奇偶校验节点。
- 我正在使用 vue-cli 和 webpack。
- 本地主机上的奇偶校验是 运行ning。
- 当我访问
http://localhost:8545
时,我看到哪个告诉我 Parity 正在监听。
我创建了以下 Vue 组件:
<template>
<div class="hello">
<h1>{{ title }}</h1>
<h2>{{ accounts() }}</h2>
</div>
</template>
<script>
import Web3 from 'web3'
export default {
name: 'hello',
http: {
root: '/root',
headers: {
AccessControlAllowOrigin: 'true'
}
},
data () {
return {
title: 'web3.js App'
}
},
methods: {
accounts: function () {
const ethereumUri = 'http://localhost:8545' // 8540, 8545, 8180
let web3 = new Web3(new Web3.providers.HttpProvider(ethereumUri))
if (!web3.isConnected()) {
return 'Unable to connect to ethereum node at ' + ethereumUri
} else {
let accounts = web3.eth.accounts
return accounts
}
}
}
}
</script>
当我 运行 npm run dev
我得到这个:
在控制台上我看到了这个:
我尝试使用此配置代码添加一个 Access-Control-Allow-Origin header,但它没有修复它。控制台错误似乎表明 Parity 节点需要设置此 header 选项。
http: {
root: '/root',
headers: {
AccessControlAllowOrigin: 'true'
}
},
解决方案是创建一个名为 config.toml
的奇偶校验配置文件。
文件位置:
- Windows: %UserProfile%\AppData\Roaming\Parity\Ethereum\config.toml
- Linux: ~/.local/share/io.parity.ethereum/config.toml
- macOS: $HOME/Library/Application Support/io.parity.ethereum/config.toml
文件内容:
[parity]
# Test Network
chain = "ropsten"
[rpc]
# Allows Cross-Origin Requests from domain '*'.
cors = "*"
# Allow connections only using specified addresses.
hosts = ["", "http://localhost:8080"]
参考:
- 校验配置文件documentation.
- 奇偶校验配置文件 generator。
- 跨源资源共享 (CORS) reference。
谢谢 wostex 的评论。