RAML鱼鹰模拟服务TypeError:无法读取null的属性'absolutePath'

时间:2018-06-22 00:40:29

标签: raml

当我尝试使用DataType中的“用途”时,使用osprey-mock-service for RAML 1.0似乎遇到了问题。 RAML基于API Workbench并使用raml-cop有效。以下是我拥有的DataType的示例以及收到的错误消息。不知道我做错了什么还是模拟服务是否有问题。如果我在数据类型中不使用“ uses”,那么一切都会很好。

RAML:

#%RAML 1.0 DataType
uses:
 StandardTypes: ../standard-types.raml

type: !include ../entity.raml
properties:
 firstName: string
 lastName: string
 birthDate: string
 phone: StandardTypes.Phone

错误:

TypeError: Cannot read property 'absolutePath' of null
at LowLevelWrapperForTypeSystem.children (C:\Users\greg.smith\AppData\Roaming\npm\node_modules\osprey-mock-service\node_modules\raml-1-parser\dist\parser\highLevelImpl.js:1011:75)
at parse (C:\Users\greg.smith\AppData\Roaming\npm\node_modules\osprey-mock-service\node_modules\raml-typesystem\dist\src\parse.js:784:18)
at AccumulatingRegistry.get (C:\Users\greg.smith\AppData\Roaming\npm\node_modules\osprey-mock-service\node_modules\raml-typesystem\dist\src\parse.js:257:30)
at C:\Users\greg.smith\AppData\Roaming\npm\node_modules\osprey-mock-service\node_modules\raml-typesystem\dist\src\parse.js:375:17
at Array.forEach (<anonymous>)
at Object.parseTypeCollection (C:\Users\greg.smith\AppData\Roaming\npm\node_modules\osprey-mock-service\node_modules\raml-typesystem\dist\src\parse.js:374:74)
at Object.parseFromAST (C:\Users\greg.smith\AppData\Roaming\npm\node_modules\osprey-mock-service\node_modules\raml-typesystem\dist\src\index.js:89:15)
at ASTNodeImpl.types (C:\Users\greg.smith\AppData\Roaming\npm\node_modules\osprey-mock-service\node_modules\raml-1-parser\dist\parser\highLevelImpl.js:1280:38)
at ASTNodeImpl.types (C:\Users\greg.smith\AppData\Roaming\npm\node_modules\osprey-mock-service\node_modules\raml-1-parser\dist\parser\highLevelImpl.js:1223:49)
at ASTNodeImpl.types (C:\Users\greg.smith\AppData\Roaming\npm\node_modules\osprey-mock-service\node_modules\raml-1-parser\dist\parser\highLevelImpl.js:1223:49)

1 个答案:

答案 0 :(得分:0)

根据您发送的代码段和日志很难弄清楚是什么原因造成的。我尝试使用完全相同的DataType进行复制,创建了一个standard-types.raml库,一个entity.raml DataType,并将它们都放在一个较高的目录中,然后将您的DataType !include { }},将其传递给api.raml,就可以了。