[
https://issues.apache.org/jira/browse/THRIFT-3546?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15552922#comment-15552922
]
ASF GitHub Bot commented on THRIFT-3546:
----------------------------------------
GitHub user bgould opened a pull request:
https://github.com/apache/thrift/pull/1111
THRIFT-3546: Remove global namespace objects from nodejs generated code
Modified the node.js code generator to not generate namespace object by
default, as using require() is the idiomatic way to reference classes contained
in other modules for node, instead of relying on a object heirarchy existing in
the global namespace.
This change makes the generated code work under Javascript's "use strict"
mode.
In case others are relying on the existing behavior, I added a ":with_ns"
flag to the compiler that enables the current behavior for backwards
compatibility.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/bgould/thrift THRIFT-3546
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/thrift/pull/1111.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #1111
----
commit 10d11d733bfec328b94e1a3d70675f67cbc44312
Author: BCG <[email protected]>
Date: 2016-10-05T14:25:27Z
Removed namespace objects from nodejs generated code, and added with_ns
option for backwards compatibility.
----
> NodeJS code should not be namespaced (and is currently not strict-mode
> compliant)
> ---------------------------------------------------------------------------------
>
> Key: THRIFT-3546
> URL: https://issues.apache.org/jira/browse/THRIFT-3546
> Project: Thrift
> Issue Type: Bug
> Components: Node.js - Compiler
> Affects Versions: 0.9.3
> Reporter: Yunchi Luo
>
> Code generated for NodeJS, whether with a js namespace specified or not,
> seems to fail strict mode. Specifically, it doesn't always generate "var"
> when needed. This might not sound like a big issue but it's quite a pain to
> deal with...
> It is standard nowadays to enable strict mode for Javascript code
> (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode).
> And babel, which is one of most popular ES6 => ES5 transpilers, while does
> not force strict mode, does seem to break when you don't use "var".
> I think the best solution here is really to just stop using namespaces in
> node code. Every type will be declared with "var", and if exported, also
> assigned to "module.exports".
> I don't believe namespaces currently generated in the node code is directly
> used anywhere or is even accessible outside the file?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)