[
https://issues.apache.org/jira/browse/COUCHDB-1075?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13029389#comment-13029389
]
Caolan McMahon commented on COUCHDB-1075:
-----------------------------------------
1. I didn't want to replace the source of the module with a function and loose
that information, so I tried adding a compiled property to the string (the same
approach used in mikeal's patch:
https://issues.apache.org/jira/browse/COUCHDB-890) but because strings are not
passed around by reference, you can't extend the string object on the design
doc with a new property easily... in fact I don't think that patch even works.
Adding a _module_cache property seemed like the simplest way to store compiled
modules without restructuring lots of code without much test coverage (and it
lead me to fixing errors in the ways module ids are defined and module
resolution works).
2. Circular dependencies are handled like this in every other environment I can
think of. In fact node.js does exactly the same... but you'll see similar
behaviour from Python and others. I think developers will expect CouchDB to
behave in the same way.
Thanks again for the feedback Alexander :)
> Circular require's in CommonJS modules
> --------------------------------------
>
> Key: COUCHDB-1075
> URL: https://issues.apache.org/jira/browse/COUCHDB-1075
> Project: CouchDB
> Issue Type: Bug
> Components: JavaScript View Server
> Reporter: Caolan McMahon
> Labels: javascript
> Attachments: module_cache.diff
>
>
> Having a CommonJS module A which requires B, when B also requires A causes
> the stack to fill up with require calls. A prerequisite for this fix is the
> caching of modules, even if it is only on a per-request basis.
> Patch incoming.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira