#nearprotocol
#nearprotocol
Вопрос:
Я получаю следующую ошибку при попытке скомпилировать смарт-контракты NEAR, но только при компиляции в цель wasm
Compiling nep9000 v0.1.0 (/Users/mikkoohtamaa/code/advanced-fungible-token/contract)
error[E0433]: failed to resolve: use of undeclared type or module `near_blockchain`
--> src/token.rs:144:1
|
144 | #[near_bindgen]
| ^^^^^^^^^^^^^^^ use of undeclared type or module `near_blockchain```
Нормально cargo build
.
Ответ №1:
Похоже, вам нужно объявить #[near_bindgen]
как struct
в контракте, так и impl
в контракте, impl
только этого недостаточно.
#[near_bindgen]
#[derive(BorshDeserialize, BorshSerialize)]
pub struct Token {
...
}
#[near_bindgen]
impl Token {
...
}
Комментарии:
1. Хотя не уверен, почему я получаю эту ошибку только для цели wasm.
Ответ №2:
Если вы столкнулись с этой ошибкой при разбиении вашего смарт-контракта Rust на отдельные файлы, пожалуйста, используйте use crate::*;
вместо того, что может предложить ваша IDE.
Например, предположим, что у нас есть эта файловая структура в нашем проекте:
.
├── Cargo.lock
├── Cargo.toml
├── src
│ ├── my_mod.rs. ⟵ here is the module file
│ └── lib.rs
└── build-and-test.sh
Когда вы добавляете новый файл my_mod.rs
, вам нужно убедиться lib.rs
, что он имеет:
mod my_mod;
Внутри my_mod.rs
вас может быть, что ваша среда разработки предложит это:
use crate::Contract;
который следует заменить на:
use crate::*;