On 26.11.2014 14:39, Mitchell Joblin wrote:
That's the one from the pull request and it's the one I'm talking about: https://github.com/matthid/codeface/commit/d1da972b87c18ea10f3014c5c4a90e31bbc1fd48. You have to watch closely, it looks like I add bodyparser but you can see in the deleted lines that it was used before. It's just that nodejs moved it out of the core distribution (so the old code will not work anymore). Does that clear everything up? Can you try what I suggested in my last email?On Wed, Nov 26, 2014 at 2:29 PM, Matthias Dittrich <matthi.d@xxxxxxxxxxxxxx> wrote:On 26.11.2014 12:38, Mitchell Joblin wrote: On Tue, Nov 25, 2014 at 7:32 PM, Matthias Dittrich <matthi.d@xxxxxxxxxxxxxx> wrote: On 25.11.2014 16:20, Mitchell Joblin wrote: On Mon, Nov 17, 2014 at 8:49 PM, Wolfgang Mauerer <wm@xxxxxxxxxxxxxxxx> wrote: Am 17/11/2014 16:22, schrieb Matthias Dittrich: On 17.11.2014 16:10, Wolfgang Mauerer wrote: Am 17/10/2014 15:14, schrieb Matthias Dittrich: This change makes id_service.js compatible with the latest nodejs versions. does "latest" version refer to development version, or the latest released version? I have installed net-libs/nodejs 0.10.21 on my gentoo (which are normaly quite up to date with their packages) machine, and that version needs that change... ok, so it's required for a released version. Signed-off-by: Matthias Dittrich <matthi.d@xxxxxxxxx> --- README.md | 2 +- id_service/id_service.js | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 4574d23..277a67a 100644 --- a/README.md +++ b/README.md @@ -155,7 +155,7 @@ See `bugextractor/INSTALL` for all java-related details. * The ID service requires a few node.js packages. Install them by running - npm install addressparser express js-yaml mysql + npm install addressparser express js-yaml mysql body-parser in the `id_service` directory. diff --git a/id_service/id_service.js b/id_service/id_service.js index 2bb5afe..48bc7c1 100644 --- a/id_service/id_service.js +++ b/id_service/id_service.js @@ -21,6 +21,7 @@ var mysql = require('mysql'); var yaml = require("js-yaml"); var logger = require('./logger'); var addressparser = require("addressparser"); +var bodyParser = require('body-parser'); // get property file name var fileName = process.argv[2]; @@ -63,10 +64,10 @@ var db_config = { }; var pool = mysql.createPool(db_config) -app.configure(function() { - // used to parse JSON object given in the body request - app.use(express.bodyParser()); -}); +var env = process.env.NODE_ENV || 'development'; ... here it seems you're referring to the development version. https://github.com/strongloop/express/wiki/Migrating-from-3.x-to-4.x But I suppose we will need body-parser when this version becomes a release? If yes, is there maybe a way to use something like a node.js version number? I'm not really into nodejs and how they handle releases, sorry. I can just say that I needed those changes because the old code would fail and I saw that this is the recommended change to do. If you don't need different environments I think it's fine to remove that if clause and keep the app.use call. We did not distinguish between development and production environments before. Even if we distinguished between development and production environment, why would it help to call the bodyParser() constructor only during development? Best regards, Wolfgang +if ('development' == env) { + app.use(bodyParser()); At least according to http://stackoverflow.com/questions/24330014/bodyparser-is-deprecated-express-4, this call has been deprecated for many years. The github site you mention does also not say that you need to call bodyParser(). Can you please make sure a) why we need bodyParser(), and b) how it's used correctly, if we need it? Thanks! @Matthias, what's the status of this? I have merged your latest branch (locally) and am testing it out. When I start the id service I get the following Starting REST Service with logging level "info" info: Connecting to MySQL at codeface@localhost database codeface body-parser deprecated undefined extended: provide extended option id_service.js:68:20 --Mitchell I do not see this on my system and I have no idea what that means. Is it at least working? It does not have any visible failures at this point. You added body-parser in one of you commits and it looks like one of the calls is already deprecated. No I did not add anything at all, codeface used bodyparser before. It's just that nodejs moved bodyparser out of their core distribution (if I understood that right). That is the reason why the previous code will not work on newer nodejs versions. Than I changed the code again in the latest rebase because, calling bodyparser() was deprecated (again I did not add anything!).On your latest pull request there is a commit titled "Upgrade to latest nodejs changes" and there is 4 deleted and 2 added lines to the id_services.js file. This is the change I am talking about. Are you saying this patch is not the right one? If so then please update the pull request.
-- Matthias
--MitchellSee http://stackoverflow.com/questions/24330014/bodyparser-is-deprecated-express-4 If you want you can try and change the code to app.use(bodyParser.urlencoded({ extended: true })); Can you test that code as I have no warnings on my system? If it works could you commit it on top of my changes, push it to github and send me the hash. This way I could cherry-pick the commit and sqash it in (if you want it that way; maybe even keep the separate commit?). It seems like they don't know what they want to do and deprecate things all the time, but at least it will now work on newer nodejs versions... I hope we can now just get over this change that doesn't actually do anything besides trying to make things work again :). --Matthias --Mitchell --Matthias Best regards, Wolfgang +} /** * Obtain a connection from the pool, check if it works, and then execute