智能合约无法使用松露加载 Web3
Smart Contract failed to load Web3 with truffle
我正在尝试使用 solidity 0.5.10、truffle 和 web3 创建一个 ETH 智能合约。一切似乎都很好,除了我得到:
ParserError:预期编译指示、导入指令或 contract/interface/library 定义。
const web3 = require('web3');
当我尝试加载 web3 时。
我已经安装了 web3(dir {project folder} npm install web3)并且在我的 package.json(位于我的项目文件夹中):
“依赖项”:{
“web3”:“^1.3.4”
}
我都试过了:
从 'web3' 导入 Web3;
并且
const Web3 = require('web3');
但是仍然无法加载web3,我做错了什么?
导致错误的合同
pragma solidity 0.5.10;
const web3 = require('web3');
contract UserRepository {
struct User {
uint id;
bytes32 firstName;
bytes32 lastName;
}
mapping(uint => User) public users;
uint public latestUserId = 0;
address private owner;
constructor() public {
owner = msg.sender;
}
}
package.json
{
"name": "helloworld",
"version": "1.0.0",
"main": "truffle-config.js",
"directories": {
"test": "test"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"description": "",
"dependencies": {
"web3": "^1.3.4"
}
}
您正在将 node.js 混合到您的 Solidity 代码中。
pragma solidity 0.5.10;
const web3 = require('web3'); // this is node.js
contract UserRepository {
删除 const web3 = require('web3');
行,它将编译成功 (在 Remix 中测试).
这里我只是猜测你想使用 web3
来启用 JS 代码与你的智能合约进行通信(例如用于测试目的)。
如果是这种情况,您需要创建一个单独的 JS 文件来导入 web3
并使用 web3.eth.Contract.
实例化此合约
或者因为您已经在使用 Truffle 进行编译,您可以使用它们的 test tools 进行智能合约的 JS 测试。
我正在尝试使用 solidity 0.5.10、truffle 和 web3 创建一个 ETH 智能合约。一切似乎都很好,除了我得到:
ParserError:预期编译指示、导入指令或 contract/interface/library 定义。 const web3 = require('web3');
当我尝试加载 web3 时。
我已经安装了 web3(dir {project folder} npm install web3)并且在我的 package.json(位于我的项目文件夹中):
“依赖项”:{ “web3”:“^1.3.4” }
我都试过了: 从 'web3' 导入 Web3;
并且 const Web3 = require('web3');
但是仍然无法加载web3,我做错了什么?
导致错误的合同
pragma solidity 0.5.10;
const web3 = require('web3');
contract UserRepository {
struct User {
uint id;
bytes32 firstName;
bytes32 lastName;
}
mapping(uint => User) public users;
uint public latestUserId = 0;
address private owner;
constructor() public {
owner = msg.sender;
}
}
package.json
{
"name": "helloworld",
"version": "1.0.0",
"main": "truffle-config.js",
"directories": {
"test": "test"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"description": "",
"dependencies": {
"web3": "^1.3.4"
}
}
您正在将 node.js 混合到您的 Solidity 代码中。
pragma solidity 0.5.10;
const web3 = require('web3'); // this is node.js
contract UserRepository {
删除 const web3 = require('web3');
行,它将编译成功 (在 Remix 中测试).
这里我只是猜测你想使用 web3
来启用 JS 代码与你的智能合约进行通信(例如用于测试目的)。
如果是这种情况,您需要创建一个单独的 JS 文件来导入 web3
并使用 web3.eth.Contract.
或者因为您已经在使用 Truffle 进行编译,您可以使用它们的 test tools 进行智能合约的 JS 测试。