在Android studio调试的官方钱包内测试的,用的是webpack打包,依然无法拿到nervos实例
demo已更新在这里,帮我看看配置哪里出错
https://www.lanzous.com/i1rbnqd
代码如下
package.json
{
“name”: “webpack-sample-project”,
“version”: “1.0.0”,
“description”: “Sample webpack project”,
“scripts”: {
“start”: “webpack”,
“webpack”: “webpack”,
“dev”: “webpack-dev-server”
},
“author”: “fx”,
“license”: “ISC”,
“dependencies”: {
“webpack”: “latest”,
“webpack-dev-server”: “latest”,
“@nervos/chain”: “^0.17.10”
},
“devDependencies”: {
“webpack”: “^4.17.1”,
“webpack-cli”: “^3.1.0”,
“babel-cli”: “^6.26.0”,
“babel-core”: “^6.26.3”,
“babel-eslint”: “^8.2.3”,
“babel-loader”: “^7.1.4”,
“babel-preset-es2015”:“latest”,
“babel-preset-stage-3”:“latest”,
“json-loader”: “^0.5.7”,
“node-sass”: “^4.9.0”,
“sass-loader”: “^7.0.3”,
“css-loader”: “^0.28.11”,
“style-loader”: “^0.21.0”,
“html-webpack-plugin”:“latest”,
“webpack-dev-server”: “latest”
}
}
可能是webpack.config.js配置问题
webpack.config.js
const path = require(‘path’);
const htmlPlugin = require(‘html-webpack-plugin’)module.exports = {
entry: {
path: ‘./src/scripts/index.js’
},
output: {
path: path.resolve(__dirname, ‘dist’),
filename:‘js/[name].js’
// filename: ‘[name].js’
},
module: {
rules: [
{ test: /.s?css$/, use: [ ‘style-loader’, ‘css-loader’, ‘sass-loader’ ] },
{
test: /.js$/,
exclude: /(node_modules|bower_components)/,
loader: ‘babel-loader’,
query: {
presets: [‘es2015’,‘stage-3’],
plugins: []
}
}
]
},
plugins: [
new htmlPlugin({
minify: {
removeAttributeQuotes: true
},
hash: true,
template: ‘./src/index.html’
})
],devServer: { contentBase: path.resolve(__dirname, 'dist'), // 服务路径 inline: true,//实时刷新 compress:true,//服务端压缩是否开启,一般设置为开启, host: '192.168.0.109', port: 8080 }
}
manifest.json
{
“name”: “hello”,
“blockViewer”: “https://etherscan.io/”,
“chainSet”: {
“1”: “http://121.196.200.225:1337”
},
“icon”: “http://7xq40y.com1.z0.glb.clouddn.com/23.pic.jpg”,
“entry”: “./index.html”,
“provider”: “https://cryptape.com/”
}
nervos.js
const { default: Nervos } = require(’@nervos/chain’) // 引入 Nervos 实例
const config = require(’./config’)
console.log(window.nervos);
if (typeof window.nervos !== ‘undefined’) { // 检测当前浏览器环境 window 中是否有 nervos 实例,如果有的话,用window.nervos 中的currentProvider 实例化 Nervos
window.nervos = Nervos(window.nervos.currentProvider);
console.log(’=====nervos ok======’)
window.nervos.currentProvider.setHost(“https://node.cryptape.com”); // 由于存在多链的情况,需要 DApp 指明当前 AppChain 的节点IP地址信息,对于单链 DApp 只需要指定一次即可。
} else {
console.log(‘No nervos? You should consider trying Neuron!’)// 如果当前浏览器环境 window 中没有 nervos 实例,则需要手动提供节点IP地址,并完成实例化
window.nervos = Nervos(config.chain);}
var nervos = window.nervosmodule.exports = nervos
index.html
<link rel="manifest" href="./manifest.json"> <title>webpack_demo1</title>
open nervoshello woo2
index.js
import ‘…/styles/app.css’
import { nervos,transaction, simpleStoreContract } from ‘./simpleStore’
// import nervos from ‘./nervos’
window.App={
click:function(){ console.log('click-ok'); console.log(nervos); nervos.appchain.getBlockNumber().then(current => { var text=''; var time=new Date().getTime(); const tx = { ...transaction, from:window.neuron.getAccount(), validUntilBlock: +current + 88, } // this.setState({ // submitText: submitTexts.submitting, // }) console.log("add account=====" + window.neuron.getAccount()+'--current:'+current) var that = this; simpleStoreContract.methods.add(text, time).send(tx, function(err, res) { if (res) { nervos.listeners.listenToTransactionReceipt(res).then(receipt => { if (!receipt.errorMessage) { // console.log('submitTexts.submitted='+submitTexts.submitted ); // that.setState({ submitText: submitTexts.submitted }) } else { throw new Error(receipt.errorMessage) } }) } else { // that.setState({ submitText: submitTexts.normal }) console.log('error==========='+err) } }) }) }
}
config.js
const config = {
chain: ‘https://node.cryptape.com’,
contractAddress: ‘0x23072A5E3E5294BEFD4BAA09B26129f88Be4ed8D’,
}
module.exports = config