Javascript 错误:命名空间中类型的标识符无效或丢失

Javascript 错误:命名空间中类型的标识符无效或丢失,javascript,hyperledger-fabric,hyperledger-composer,Javascript,Hyperledger Fabric,Hyperledger Composer,当我尝试调用从抽象基类资产继承的资产上的事务时,调用失败,出现错误:命名空间中类型的标识符无效或丢失 user.cto namespace com.aczire.alm.base.user import com.aczire.alm.base.* abstract participant User { o String uid o String title optional o String firstName optional o String lastName opt

当我尝试调用从抽象基类资产继承的资产上的事务时,调用失败,出现
错误:命名空间中类型的标识符无效或丢失

user.cto

namespace com.aczire.alm.base.user

import com.aczire.alm.base.*

abstract participant User {
  o String uid
  o String title optional
  o String firstName  optional
  o String lastName  optional
  o UserTransactionLogEntry[] logEntries
}

concept UserTransactionLogEntry {
  //--> User modified_by
  o String comment optional
  o DateTime timestamp
}

abstract transaction UserTransaction  {
  o String comment
}

abstract event UserTransactionEvent {
  o String comment
}
namespace com.aczire.alm.base.user.admin

import com.aczire.alm.base.*
import com.aczire.alm.base.user.*

participant Admin identified by uname extends User {
  o String uname
}

abstract transaction AdminUserTransaction extends UserTransaction {
  o Admin user
  --> Admin modified_by
}

abstract event AdminUserTransactionEvent extends UserTransactionEvent {
  --> Admin user
  --> Admin modified_by  
}

transaction CreateUser extends AdminUserTransaction {
}
管理cto

namespace com.aczire.alm.base.user

import com.aczire.alm.base.*

abstract participant User {
  o String uid
  o String title optional
  o String firstName  optional
  o String lastName  optional
  o UserTransactionLogEntry[] logEntries
}

concept UserTransactionLogEntry {
  //--> User modified_by
  o String comment optional
  o DateTime timestamp
}

abstract transaction UserTransaction  {
  o String comment
}

abstract event UserTransactionEvent {
  o String comment
}
namespace com.aczire.alm.base.user.admin

import com.aczire.alm.base.*
import com.aczire.alm.base.user.*

participant Admin identified by uname extends User {
  o String uname
}

abstract transaction AdminUserTransaction extends UserTransaction {
  o Admin user
  --> Admin modified_by
}

abstract event AdminUserTransactionEvent extends UserTransactionEvent {
  --> Admin user
  --> Admin modified_by  
}

transaction CreateUser extends AdminUserTransaction {
}
admin.js

/**
 * Create a User
 * @param {com.aczire.alm.base.user.admin.CreateUser} createUser - the CreateUser transaction
 * @transaction
 */
function createUser(newuser) {
    console.log('createUser');

    var factory = getFactory();
    var NS_AU = 'com.aczire.alm.base.user.admin';

    var user = factory.newResource(NS_AU, 'Admin', newuser.uname);
    user.uid = newuser.uid;

    // save the order
    return getAssetRegistry(NS_AU)
        .then(function (registry) {
            return registry.add(user);
        })
        .then(function(){
            var userCreatedEvent = factory.newEvent(NS_AU, 'UserCreatedEvent');
            userCreatedEvent.user = user;
            userCreatedEvent.comment = 'Created new admin user - ' + newuser.uname + '!';
            emit(userCreatedEvent);
        });
}
我尝试将参数设置为用户Admin;将事务参数作为用户类型移动到基类;将事务移动到基类等。。但似乎什么都不管用

继承在这里的工作方式不同吗

composer游乐场中显示错误。
你的admin.js有一些问题。错误是因为Admin是参与者,所以您必须获取participantergistry()而不是Assetregistry,然后添加用户。在模型文件admin.cto中也没有名为UserCreatedEvent的事件。因此,首先需要将其添加到模型中,然后发出事件。若要添加用户,请尝试更改为此

    /**
 * Create a User
 * @param {com.aczire.alm.base.user.admin.CreateUser} createUser - the CreateUser transaction
 * @transaction
 */
function createUser(newuser) {
    console.log('createUser');
    var NS_AU = 'com.aczire.alm.base.user.admin';
    var factory = getFactory();

    var testuser = factory.newResource(NS_AU, 'Admin', newuser.user.uname);
    testuser.uid=newuser.user.uid
    testuser.logEntries=newuser.user.logEntries
    // save the order
            return getParticipantRegistry('com.aczire.alm.base.user.admin.Admin')
        .then(function (registry) {
            return registry.add(testuser);
        });
}

对于任何一个面临相同问题的人来说,实际问题出现在factory.newResource(NS_AU,'Admin',newuser.uname)中。找不到用户。根据@Sneha的答案进行了更改,一切都很好!