-
Notifications
You must be signed in to change notification settings - Fork 379
Description
This is probably a niche case but I am just starting with DocumentJS, having something that already has some JSDoc comments put in, but probably is not at all structured appropriately. This is following the exact steps on documentjs.com directly, except that the 'document your code' stuff was already done and hence no file modifications have been made yet; I'm just running this in a project folder that already existed. It happens whether I use the documentjs.json
from documentjs.com
or whether I delete it wholesale as the API docs appear to state. It does seem to be confused also about where the output directory is, but I assume I will figure out ways to configure that.
When I am running documentjs
in a debugger, I get some initial output:
No documentjs.json. Create one to configure its behavior. generate_project.js:101
Generating docs at ..\docs generate_project.js:147
FIND: README.md file_event_emitter.js:80
FIND: app.js file_event_emitter.js:80
BUILD: Using cache site\templates\99914b932bd37a50b983c5e7c90ae93ib templates.js:64
FIND: libs\content-uuid.js file_event_emitter.js:80
FIND: libs\forge.js file_event_emitter.js:80
FIND: libs\get-db.js file_event_emitter.js:80
FIND: routes\auth.js file_event_emitter.js:80
FIND: routes\forge.js file_event_emitter.js:80
FIND: static\autodesk.js file_event_emitter.js:80
FIND: static\run-viewer.js file_event_emitter.js:80
WARNING!! _default.js:129
There is no @requires tag. did you mean @return ?
WARNING!! _default.js:129
There is no @requires tag. did you mean @return ?
WARNING!! _default.js:129
There is no @requires tag. did you mean @return ?
WARNING!! _default.js:129
There is no @requires tag. did you mean @return ?
WARNING!! _default.js:129
There is no @throws tag. did you mean @this ?
BUILD: Getting build module static_dist.js:88
Guessed parent 'libs\forge.js'. Set parent in your siteConfig. clean_doc_map.js:47
At this point the debugger indeed pauses in filename.js
(from generate.js:60 > doc_map.js:30 > doc_object.js:32
) but it appears to be a normal, valid call.
Continuing past that, there is another line of output,
OUT: ..\docs\README.html doc_object.js:35
and then the set of circumstances is set which will generate the TypeError
: the parameter docObject
is called as undefined
.
The top of the call stack here is:
module.exports (<...>\node_modules\documentjs\lib\generators\html\write\filename.js:2)
> var name = typeof docObject == "string" ? docObject : docObject.name;
urlTo (<...>\node_modules\documentjs\lib\generators\html\build\make_default_helpers.js:432)
> return docsFilename(name, config);
program2 (VM845:27)
> buffer += escapeExpression(((stack1 = helpers.urlTo),stack1 ? stack1.call(depth0, depth0.name, options) : helperMissing.call(depth0, "urlTo", depth0.name, options)))
(anonymous function) (<...>\node_modules\handlebars\lib\handlebars\runtime.js:59)
> return fn.apply(this, [context, options.data || data].concat(args));
(anonymous function) (<...>\node_modules\handlebars\lib\handlebars\base.js:100)
> ret = ret + fn(context[i], { data: data });
program1 (VM845:11)
> stack1 = helpers.each.call(depth0, depth0.parents, {hash:{},inverse:self.noop,fn:self.programWithDepth(program2, data, depth0),data:data});
(anonymous function) (<...>\node_modules\handlebars\lib\handlebars\runtime.js:66)
> return fn(context, options.data || data);
getActiveAndParents (<...>\node_modules\documentjs\lib\generators\html\build\make_default_helpers.js:580)
> return options.fn({
(anonymous function) (VM845:99)
> if (stack1 = helpers.getActiveAndParents) { stack1 = stack1.call(depth0, options); }
(anonymous function) (<...>\node_modules\handlebars\lib\handlebars\runtime.js:30)
> var result = templateSpec.call(container, Handlebars, context, options.helpers, options.partials, options.data);
(anonymous function) (<...>\node_modules\handlebars\lib\handlebars\compiler\compiler.js:1274)
> return compiled.call(this, context, options);
invokePartial (<...>\node_modules\handlebars\lib\handlebars\runtime.js:81)
> partials[name] = Handlebars.compile(partial, {data: data !== undefined});
program3 (VM844:20)
> stack1 = self.invokePartial(partials['menu.mustache'], 'menu.mustache', depth0, helpers, partials, data);
(anonymous function) (<...>\node_modules\handlebars\lib\handlebars\runtime.js:66)
> return fn(context, options.data || data);
(anonymous function) (<...>\node_modules\handlebars\lib\handlebars\base.js:125)
> return options.inverse(this);
(anonymous function) (<...>\node_modules\handlebars\lib\handlebars\base.js:132)
> return Handlebars.helpers['if'].call(this, context, {fn: options.inverse, inverse: options.fn});
(anonymous function) (VM844:251)
> stack1 = helpers.unless.call(depth0, depth0.hideSidebar, {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});
(anonymous function) (<...>\node_modules\handlebars\lib\handlebars\runtime.js:30)
> var result = templateSpec.call(container, Handlebars, context, options.helpers, options.partials, options.data);
(anonymous function) (<...>\node_modules\handlebars\lib\handlebars\compiler\compiler.js:1274)
> return compiled.call(this, context, options);
renderer (<...>\node_modules\documentjs\lib\generators\html\build\get_renderer.js:22)
> var content = render(data);
module.exports (<...>\node_modules\documentjs\lib\generators\html\write\doc_object.js:44)
> rendered = renderer(docObject);
module.exports (<...>\node_modules\documentjs\lib\generators\html\write\doc_map.js:30)
> promises.push(writeDocObject(docObject, renderer, options, setCurrentDocObjectForHelpers));
So it's trying to render this getActiveAndParents
section and makes a call to Handlebars.
The active
argument to this is apparently a documentation object representing README.md
and the parents
argument is apparently an array with one element,
Object {name: undefined, body: "This is temporary content. Create a undefined @page", type: "page", children: Array(1), glob: Object, …}
When this happens the urlTo
is fed the .name
property which is undefined, the typeof undefined
is "undefined"
which is not "string"
so we try to access its .name
, but this is attempting to lookup properties on undefined
and generates the above TypeError
.