# \[construindo-apis-rest-com-nodejs\] - Considerações durante o estudo

**URL:** <https://forum.casadocodigo.com.br/t/construindo-apis-rest-com-nodejs-consideracoes-durante-o-estudo/82>\
**Category:** Livros\
**Tags:** apis-rest-nodejs\
**Created:** [Janeiro 27, 2016, 8:54pm UTC](https://forum.casadocodigo.com.br/t/construindo-apis-rest-com-nodejs-consideracoes-durante-o-estudo/82 "2016-01-27T20:54:55Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![leonardonhesi](https://avatars.discourse-cdn.com/v4/letter/l/ecc23a/32.png) [@leonardonhesi](https://forum.casadocodigo.com.br/u/leonardonhesi)\
**Post date:** [Janeiro 27, 2016, 8:54pm UTC](https://forum.casadocodigo.com.br/t/construindo-apis-rest-com-nodejs-consideracoes-durante-o-estudo/82/1 "2016-01-27T20:54:55Z")

</div>

Boa tarde  
Senhores, Estou estudando o livro porem estou com um erro no primeiro exercício no capitulo 04;

**Meu ambiente:**  
SO: (Linux not3130 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u3 (2016-01-17) x86\_64 GNU/Linux)  
NODE: (v5.4.1)  
NPM:(3.3.12)

**de acordo com as instruções do capitulo meu arquivo package.json**  
{  
“name”: “ntask-api”,  
“version”: “1.0.0”,  
“description”: “API de gestão de tarefas”,  
“main”: “index.js”,  
“scripts”: {  
“start”: “babel-node index.js”  
},  
“author”: “Caio Ribeiro Pereira”,  
“dependencies”: {  
“babel”: “^6.3.26”,  
“express”: “^4.13.4”  
}  
}

**Criei o arquivo “index.js” com o seguinte conteúdo:**

import express from “express”;  
const PORT = 3000;

const app = express();

app.get(“/”, (req,res) =\> res.json({status: “NTask API”}));

app.listen(PORT, () =\> console.log(‘NTask API - porta ${PORT}’));

**Problema:**  
**ao rodar o comando “npm start”, é apresentado o seguinte erro:**

ntask-api$ npm start

> ntask-api@1.0.0 start /home/leonardo/Programas/Angular/LIVRO\_NODE/ntask-api  
> babel-node index.js

The CLI has been moved into the package `babel-cli`. See [@babel/cli · Babel](http://babeljs.io/docs/usage/cli/)

npm ERR! Linux 3.16.0-4-amd64  
npm ERR! argv “/usr/local/bin/node” “/usr/local/bin/npm” “start”  
npm ERR! node v5.4.1  
npm ERR! npm v3.3.12  
npm ERR! code ELIFECYCLE  
npm ERR! ntask-api@1.0.0 start: `babel-node index.js`  
npm ERR! Exit status 1  
npm ERR!  
npm ERR! Failed at the ntask-api@1.0.0 start script ‘babel-node index.js’.  
npm ERR! Make sure you have the latest version of node.js and npm installed.  
npm ERR! If you do, this is most likely a problem with the ntask-api package,  
npm ERR! not with npm itself.  
npm ERR! Tell the author that this fails on your system:  
npm ERR! babel-node index.js  
npm ERR! You can get their info via:  
npm ERR! npm owner ls ntask-api  
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:  
npm ERR! /home/leonardo/Programas/Angular/LIVRO\_NODE/ntask-api/npm-debug.log

**Conteúdo do arquivo npm-debug.log:**

0 info it worked if it ends with ok  
1 verbose cli [‘/usr/local/bin/node’, ‘/usr/local/bin/npm’, ‘start’]  
2 info using npm@3.3.12  
3 info using node@v5.4.1  
4 verbose run-script [‘prestart’, ‘start’, ‘poststart’]  
5 info lifecycle ntask-api@1.0.0~prestart: ntask-api@1.0.0  
6 silly lifecycle ntask-api@1.0.0~prestart: no script for prestart, continuing  
7 info lifecycle ntask-api@1.0.0~start: ntask-api@1.0.0  
8 verbose lifecycle ntask-api@1.0.0~start: unsafe-perm in lifecycle true  
9 verbose lifecycle ntask-api@1.0.0~start: PATH: /usr/local/lib/node\_modules/npm/bin/node-gyp-bin:/home/leonardo/Programas/Angular/LIVRO\_NODE/ntask-api/node\_modules/.bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin:/home/leonardo/Programas/Angular/Android/android-sdk-linux/platform-tools:/home/leonardo/Programas/Angular/Android/android-sdk-linux/tools  
10 verbose lifecycle ntask-api@1.0.0~start: CWD: /home/leonardo/Programas/Angular/LIVRO\_NODE/ntask-api  
11 silly lifecycle ntask-api@1.0.0~start: Args: [‘-c’, ‘babel-node index.js’]  
12 silly lifecycle ntask-api@1.0.0~start: Returned: code: 1 signal: null  
13 info lifecycle ntask-api@1.0.0~start: Failed to exec start script  
14 verbose stack Error: ntask-api@1.0.0 start: `babel-node index.js`  
14 verbose stack Exit status 1  
14 verbose stack at EventEmitter. (/usr/local/lib/node\_modules/npm/lib/utils/lifecycle.js:232:16)  
14 verbose stack at emitTwo (events.js:87:13)  
14 verbose stack at EventEmitter.emit (events.js:172:7)  
14 verbose stack at ChildProcess. (/usr/local/lib/node\_modules/npm/lib/utils/spawn.js:24:14)  
14 verbose stack at emitTwo (events.js:87:13)  
14 verbose stack at ChildProcess.emit (events.js:172:7)  
14 verbose stack at maybeClose (internal/child\_process.js:821:16)  
14 verbose stack at Process.ChildProcess.\_handle.onexit (internal/child\_process.js:211:5)  
15 verbose pkgid ntask-api@1.0.0  
16 verbose cwd /home/leonardo/Programas/Angular/LIVRO\_NODE/ntask-api  
17 error Linux 3.16.0-4-amd64  
18 error argv “/usr/local/bin/node” “/usr/local/bin/npm” “start”  
19 error node v5.4.1  
20 error npm v3.3.12  
21 error code ELIFECYCLE  
22 error ntask-api@1.0.0 start: `babel-node index.js`  
22 error Exit status 1  
23 error Failed at the ntask-api@1.0.0 start script ‘babel-node index.js’.  
23 error Make sure you have the latest version of node.js and npm installed.  
23 error If you do, this is most likely a problem with the ntask-api package,  
23 error not with npm itself.  
23 error Tell the author that this fails on your system:  
23 error babel-node index.js  
23 error You can get their info via:  
23 error npm owner ls ntask-api  
23 error There is likely additional logging output above.  
24 verbose exit [1, true]

**Update 01**  
**Utilizei os comando:**

ntask-api$ npm install babel-core --save  
ntask-api$ npm install babel-cli -g

**E agora ao executar o npm start apresenta o seguinte erro:**

ntask-api$ npm start

> ntask-api@1.0.0 start /home/leonardo/Programas/Angular/LIVRO\_NODE/ntask-api  
> babel-node index.js

/home/leonardo/Programas/Angular/LIVRO\_NODE/ntask-api/index.js:1  
(function (exports, require, module, \_\_filename, \_\_dirname) { import express from “express”;  
^^^^^^

SyntaxError: Unexpected token import  
at exports.runInThisContext (vm.js:53:16)  
at Module.\_compile (module.js:373:25)  
at loader (/usr/local/lib/node\_modules/babel-cli/node\_modules/babel-register/lib/node.js:130:5)  
at Object.require.extensions.(anonymous function) [as .js] (/usr/local/lib/node\_modules/babel-cli/node\_modules/babel-register/lib/node.js:140:7)  
at Module.load (module.js:343:32)  
at Function.Module.\_load (module.js:300:12)  
at Function.Module.runMain (module.js:429:10)  
at /usr/local/lib/node\_modules/babel-cli/lib/\_babel-node.js:161:27  
at Object. (/usr/local/lib/node\_modules/babel-cli/lib/\_babel-node.js:162:7)  
at Module.\_compile (module.js:397:26)

npm ERR! Linux 3.16.0-4-amd64  
npm ERR! argv “/usr/local/bin/node” “/usr/local/bin/npm” “start”  
npm ERR! node v5.4.1  
npm ERR! npm v3.3.12  
npm ERR! code ELIFECYCLE  
npm ERR! ntask-api@1.0.0 start: `babel-node index.js`  
npm ERR! Exit status 1  
npm ERR!  
npm ERR! Failed at the ntask-api@1.0.0 start script ‘babel-node index.js’.  
npm ERR! Make sure you have the latest version of node.js and npm installed.  
npm ERR! If you do, this is most likely a problem with the ntask-api package,  
npm ERR! not with npm itself.  
npm ERR! Tell the author that this fails on your system:  
npm ERR! babel-node index.js  
npm ERR! You can get their info via:  
npm ERR! npm owner ls ntask-api  
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:  
npm ERR! /home/leonardo/Programas/Angular/LIVRO\_NODE/ntask-api/npm-debug.log

**No site ([Babel](https://babeljs.io/docs/setup/#node))**  
Explica uma forma utilizando presets no arquivo .babelrc.

**Update 02**

Utilizando os comando:  
ntask-api$ npm install --save-dev babel-core  
ntask-api$ npm install babel-preset-es2015 --save-dev

Criando o arquivo .babelrc  
echo ‘{ “presets”: [“es2015”] }’ \> .babelrc

agora ao executar o npm start recebo a seguinte saida:  
ntask-api$ npm start

> ntask-api@1.0.0 start /home/leonardo/Programas/Angular/LIVRO\_NODE/ntask-api  
> babel-node index.js

NTask API - porta ${PORT}

reparem no ${PORT}, não exibiu o valor da constante 3000, mas ao acessar (127.0.0.1:3000) segue a saida  
{“status”:“NTask API”}, que seria a saída correta.

**Update 03**

O problema de não exibir a constante resolvido, sintaxe errada (') o correto é (`)

Teoricamente esta tudo funcionando conforme o indicado no livro, apenas diferente a respeito da instalação do babel, a pergunta é o que fiz até agora esta certo?

**Update 4 - Capitulo 6.8 na pagina 62**  
Existe a instrução:

import bodyParser from “body-parser”;  
module.exports = app =\> {  
app.set(“port”, 3000);  
app.set(“json spaces”, 4);  
app.use(bodyParser.json());  
app.use((req, res, next) =\> {  
delete req.body.id;  
next();  
});  
};

Porem anteriormente não menciona nada sobre a instalação:  
ntask-api$ npm install body-parser --save

**Update 5 - Capitulo 8.2 na pagina 88**

Temos a instrução:

libs/boot.js para que não seja iniciada quando  
process.env.NODE\_ENV estiver com valor “test” .  
mos modificar o  
Para alterar isso, edite o libs/boot.js com esse código:  
module.exports = app =\> {  
if (process.env.NODE\_ENV !== “test”) {  
app.db.sequelize.sync().done(() =\> {  
app.listen(app.get(“port”), () =\> {  
console.log(`NTask API - porta ${app.get("port")}`);  
});  
});  
}  
}  
Porem ao inicializarmos a aplicação em ambiente de teste (npm test), não executa o trecho  
" app.db.sequelize.sync().done(() " o na primeira vez não cria a base de teste. resolvi utilizando o codigo:  
module.exports = app =\> {

```
  if (process.env.NODE_ENV !== "test") {
           app.db.sequelize.sync().done(() => {
           app.listen(app.get("port"), () => {
               console.log(`NTask API - porta ${app.get("port")}`);
               });
           });
   
       } else {
  
          app.db.sequelize.sync().done(() => {
  
         });
      };
  
  };

```

**Update 6 - Capitulo 5.3 na paginas 47 e 48**  
Neste capitulo criamos o model do usuário Users: utilizando o seguinte codigo:  
Crie o arquivo  
models/users.js com as seguintes definições:  
module.exports = (sequelize, DataType) =\> {  
const Users = sequelize.define(“Users”, {  
id: {  
type: DataType.INTEGER,  
primaryKey: true,  
autoIncrement: true  
},  
name: {  
type: DataType.STRING,  
allowNull: false,  
validate: {  
notEmpty: true  
}  
},  
email: {  
type: DataType.STRING,  
unique: true,  
allowNull: false,  
validate: {  
notEmpty: true  
}  
};  
}  
}, {  
classMethods: {  
associate: (models) =\> {  
Users.hasMany(models.Tasks);  
}  
}  
});  
return Users;

Mais adiante no capitulo 7.4 refatoramos o codigo acima mas não alteramos os campos conforme codigo abaixo:

import bcrypt from “bcrypt”;  
module.exports = (sequelize, DataType) =\> {  
const Users = sequelize.define(“Users”, {  
// Os campos desse modelo foram criados no capítulo 5  
}, {  
hooks: {  
beforeCreate: user =\> {  
const salt = bcrypt.genSaltSync();  
user.password = bcrypt.hashSync(user.password, salt);  
}  
},  
classMethods: {  
associate: models =\> {  
Users.hasMany(models.Tasks);  
},  
isPassword: (encodedPassword, password) =\> {  
return bcrypt.compareSync(password, encodedPassword);  
}  
}  
});  
return Users;  
};

Ou seja no capitulo 5 não foi instruído a criar o campo password, necessario para o correto funcionamento

Obrigado

---

<div class="post-metadata">

**Author:** ![waldemarnt](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.casadocodigo.com.br/waldemarnt/32/13924_2.png) [@waldemarnt](https://forum.casadocodigo.com.br/u/waldemarnt)\
**Post date:** [Fevereiro 6, 2016, 10:38pm UTC](https://forum.casadocodigo.com.br/t/construindo-apis-rest-com-nodejs-consideracoes-durante-o-estudo/82/2 "2016-02-06T22:38:15Z")

</div>

Também tive bastante problemas com esse livro, até postei aqui pedindo uma revisão [[construindo-apis-rest-com-nodejs] - Verificação no conteudo](http://forum.casadocodigo.com.br/t/construindo-apis-rest-com-nodejs-verificacao-no-conteudo/90/1)

---

<div class="post-metadata">

**Author:** ![ppbruna21](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.casadocodigo.com.br/ppbruna21/32/13902_2.png) [@ppbruna21](https://forum.casadocodigo.com.br/u/ppbruna21)\
**Post date:** [Fevereiro 9, 2016, 10:45pm UTC](https://forum.casadocodigo.com.br/t/construindo-apis-rest-com-nodejs-consideracoes-durante-o-estudo/82/3 "2016-02-09T22:45:24Z")

</div>

O autor poderia comentar aqui se as soluções propostas pelo leonardonhesi estão corretas? Estou querendo prosseguir com a leitura 😕

---

<div class="post-metadata">

**Author:** ![leonardonhesi](https://avatars.discourse-cdn.com/v4/letter/l/ecc23a/32.png) [@leonardonhesi](https://forum.casadocodigo.com.br/u/leonardonhesi)\
**Post date:** [Fevereiro 10, 2016, 12:21am UTC](https://forum.casadocodigo.com.br/t/construindo-apis-rest-com-nodejs-consideracoes-durante-o-estudo/82/4 "2016-02-10T00:21:10Z")

</div>

Eu consegui terminar a primeira parte do livro, que tem como objetivo a criação da API, prosseguindo agora para o FrontEnd, que no caso vou utilizar outro estudo sobre Angular que mantenho em paralelo.

Fora as atualizações e os problemas que descrevi, serviu ao propósito, mas ficaria muito melhor se o autor realize as alterações/revisões que mencionamos.

---

<div class="post-metadata">

**Author:** ![caio.ribeiro.pereira](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.casadocodigo.com.br/caio.ribeiro.pereira/32/8957_2.png) [@caio.ribeiro.pereira](https://forum.casadocodigo.com.br/u/caio.ribeiro.pereira)\
**Post date:** [Fevereiro 18, 2016, 3:06am UTC](https://forum.casadocodigo.com.br/t/construindo-apis-rest-com-nodejs-consideracoes-durante-o-estudo/82/5 "2016-02-18T03:06:08Z")

</div>

Obrigado por esses feedbacks! Atualmente estou revisando o livro inteiro para em breve gerar um update não só de correções de bugs mas tbm de compatibilidade com novas versões de módulos que estão quebrando o livro atual.

---

<div class="post-metadata">

**Author:** ![viniciusba](https://avatars.discourse-cdn.com/v4/letter/v/e47c2d/32.png) [@viniciusba](https://forum.casadocodigo.com.br/u/viniciusba)\
**Post date:** [Fevereiro 24, 2016, 4:27pm UTC](https://forum.casadocodigo.com.br/t/construindo-apis-rest-com-nodejs-consideracoes-durante-o-estudo/82/6 "2016-02-24T16:27:50Z")

</div>

Não consigo instalar o bcrypt no Windows 10 para o capitulo 7.

---

<div class="post-metadata">

**Author:** ![caio.ribeiro.pereira](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.casadocodigo.com.br/caio.ribeiro.pereira/32/8957_2.png) [@caio.ribeiro.pereira](https://forum.casadocodigo.com.br/u/caio.ribeiro.pereira)\
**Post date:** [Fevereiro 26, 2016, 12:56pm UTC](https://forum.casadocodigo.com.br/t/construindo-apis-rest-com-nodejs-consideracoes-durante-o-estudo/82/7 "2016-02-26T12:56:04Z")

</div>

O bcrypt é um módulo compilado em C para rodar no Node.js, qualquer problema referente a ele no Windows 10, é bem provavel que seja por causa das bibliotecas C++ fornecidas pelo Visual Studio, de qualquer forma, dê uma olhada nesse link: [https://github.com/ncb000gt/node.bcrypt.js/issues/340](https://github.com/ncb000gt/node.bcrypt.js/issues/340) como não trabalho com Windows fica díficil te ajudar a fundo.

---

<div class="post-metadata">

**Author:** ![josembergff](https://avatars.discourse-cdn.com/v4/letter/j/e99b99/32.png) [@josembergff](https://forum.casadocodigo.com.br/u/josembergff)\
**Post date:** [Maio 18, 2016, 2:13am UTC](https://forum.casadocodigo.com.br/t/construindo-apis-rest-com-nodejs-consideracoes-durante-o-estudo/82/8 "2016-05-18T02:13:49Z")

</div>

Poxa vida se eu tive-se visto este fórum não teria comprado o livro, tentei a solução do ínicio e mesmo assim não consigo passar do primeiro exemplo do livro. O dar o comando “npm start” continua dando o erro mecionado aqui. E agora o que faço?

---

<div class="post-metadata">

**Author:** ![josembergff](https://avatars.discourse-cdn.com/v4/letter/j/e99b99/32.png) [@josembergff](https://forum.casadocodigo.com.br/u/josembergff)\
**Post date:** [Maio 18, 2016, 2:49am UTC](https://forum.casadocodigo.com.br/t/construindo-apis-rest-com-nodejs-consideracoes-durante-o-estudo/82/9 "2016-05-18T02:49:45Z")

</div>

Continuei pesquisando e vi que o autor Caio Ribeiro Andrade se preocupou com os feedbacks e criou este grupo [https://groups.google.com/forum/#!forum/apis-nodejs](https://groups.google.com/forum/#!forum/apis-nodejs). Comecei do zero os exemplos só desta vez utilizando exatamente a mesma versão do livro e até agora estou conseguindo executar os exemplos.

---

<div class="post-metadata">

**Author:** ![caio.ribeiro.pereira](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.casadocodigo.com.br/caio.ribeiro.pereira/32/8957_2.png) [@caio.ribeiro.pereira](https://forum.casadocodigo.com.br/u/caio.ribeiro.pereira)\
**Post date:** [Maio 18, 2016, 11:49am UTC](https://forum.casadocodigo.com.br/t/construindo-apis-rest-com-nodejs-consideracoes-durante-o-estudo/82/10 "2016-05-18T11:49:00Z")

</div>

Olá pessoal! Desculpe a demora na resposta, semana passada meus livros de nodejs receberam um update. O livro de Api-Node.js agora esta usando versões atuais e que não quebram os exemplos do projeto piloto, se vocês compraram versão ebook vcs tem direito a download grátis, para conferirem recomendo que olhem o github dos projetos:

[Ntask API](https://github.com/caio-ribeiro-pereira/ntask-api)  
[Ntask Web](https://github.com/caio-ribeiro-pereira/ntask-web)

Abraços!

---

<div class="post-metadata">

**Author:** ![leonardonhesi](https://avatars.discourse-cdn.com/v4/letter/l/ecc23a/32.png) [@leonardonhesi](https://forum.casadocodigo.com.br/u/leonardonhesi)\
**Post date:** [Maio 18, 2016, 12:11pm UTC](https://forum.casadocodigo.com.br/t/construindo-apis-rest-com-nodejs-consideracoes-durante-o-estudo/82/11 "2016-05-18T12:11:18Z")

</div>

Grande Caio, seu trabalhos tem me ajudado muito nos estudos, Real TIme e o APiRest, legal você considerar os feedbacks e realizar updates nos livros, obrigado
