Testar o autocustos numa máquina local

Alguém por aí tem Linux (ou alguma distribuição como Ubuntu)?

Considerando que todo o código do autocustos é aberto, i.e., open source, precisava de alguém para testar a implementação do autocustos na sua própria máquina Linux (ou numa qualquer distribuição de Linux).
Precisava mesmo de saber se funciona noutras máquinas, considerando que quando se corre a instalação, é suposto ser “chave na mão” com um simples comando, isto é, com apenas um comando o autocustos está a funcionar na máquina local.

Por isso pedia, a quem tivesse linux, que fizesse apenas

  • instalar o node (quem ainda não o tem) com estes dois simples comandos:
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install nodejs
  • instalar o autocustos
npm i autocosts

O autocustos deverá ficar logo a funcionar na máquina local.

@jpbarreto @jmpa @Nuro_Carvalho @Rui @brunobarao etc.

4 Curtiram

Testei no Windows 10. Está a correr.

1 Curtiu

Boa! Conseguiste testar no Windows? Mas tens Node no Windows? Obrigado pelo retorno

Usas isto:

3 Curtiram

Ah, ok. Como só uso Ubuntu desconhecia por completo essas ferramentas. No Ubuntu também há emuladores de Windows, o mais conhecido é o Wine, já usei para videojogos e funciona muito bem.

@brunobarao @Bruno_Santos podem sff também testar?
Agradecidos

Eu uso Neon, que é baseado no Ubuntu.

Funciona (tive que instalar o módulo concat-files e debug), mas fica sem qualquer tipo de formatação. Parece que não carrega o CSS.

Não percebo a necessidade de instalar isto localmente desta forma, algo mais simples poderia ser melhor, uma appimage ou assim.

Tenho este erro, se ajudar a perceber o que poderá ser o problema da formatação:

TypeError: res.status is not a function
at /home/bruno/autocustos/node_modules/autocosts/bin/index.js:244:7
at Layer.handle [as handle_request] (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:317:13)
at /home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:335:12)
at next (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:275:10)
at urlencodedParser (/home/bruno/autocustos/node_modules/autocosts/node_modules/body-parser/lib/types/urlencoded.js:91:7)
at Layer.handle [as handle_request] (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:317:13)
at /home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:284:7
undefined

Bom trabalho!

1 Curtiu

Obrigado @Bruno_Santos

Instalaste via npm? Isso parece ser um erro do express que deve ser instalado quando se instala via npm i autocosts.

É criado servidor local http para que a pessoa possa correr o autocustos numa máquina local, apena isso. O express é usado no servidor principal do autocustos para lidar com os pedidos http, esta foi uma forma simples de adaptar o código à máquina local

Instalei o express (não instalou automaticamente), e depois pediu o jquery e jquery-color, mas o problema mantém-se. Não há formatação e aparecem os erros do servidor:

undefined
TypeError: res.status is not a function
at /home/bruno/autocustos/node_modules/autocosts/bin/index.js:244:7
at Layer.handle [as handle_request] (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:317:13)
at /home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:335:12)
at next (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:275:10)
at urlencodedParser (/home/bruno/autocustos/node_modules/autocosts/node_modules/body-parser/lib/types/urlencoded.js:91:7)
at Layer.handle [as handle_request] (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:317:13)
at /home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:284:7
undefined
undefined
TypeError: res.status is not a function
at /home/bruno/autocustos/node_modules/autocosts/bin/index.js:244:7
at Layer.handle [as handle_request] (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:317:13)
at /home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:335:12)
at next (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:275:10)
at urlencodedParser (/home/bruno/autocustos/node_modules/autocosts/node_modules/body-parser/lib/types/urlencoded.js:91:7)
at Layer.handle [as handle_request] (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:317:13)
at /home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:284:7
TypeError: res.status is not a function
at /home/bruno/autocustos/node_modules/autocosts/bin/index.js:244:7
at Layer.handle [as handle_request] (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:317:13)
at /home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:335:12)
at next (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:275:10)
at urlencodedParser (/home/bruno/autocustos/node_modules/autocosts/node_modules/body-parser/lib/types/urlencoded.js:91:7)
at Layer.handle [as handle_request] (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:317:13)
at /home/bruno/autocustos/node_modules/autocosts/node_modules/express/lib/router/index.js:284:clock7:

Espero que ajude! :slight_smile:

1 Curtiu

Isso é super estranho pois todos os pacotes necessários são automaticamente instalados quando se faz npm i autocosts, pois os pacotes necessários estão todos descritos no ficheiro package.json. Ou seja, não deveria ser necessário instalar nada manualmente.

Desculpa insistir na pergunta @Bruno_Santos : instalaste via
npm i autocosts? Podes mostrar o output do comando npm i autocosts?

Sim, claro. Segui as instruções, mas instalei o node dos pacotes da distribuição. Será que é uma versão antiga demais?

1 Curtiu

$ apt policy nodejs
nodejs:
Installed: 8.10.0~dfsg-2ubuntu0.4

Vou instalar do repo que listaste. :slight_smile: deve ser isso de certeza.

Solved. A versão 8 não fez a instalação automática das dependências. Funciona aparentemente como é suposto. :slight_smile:

1 Curtiu

Obrigado :slight_smile:

Refereste à versão do node? Acho que o que faz a instalação das dependências é o npm e não o node. Em qualquer caso muito obrigado :wink:

O npm é um binário do nodejs, e no pacote do Ubuntu não fez a instalação automática, na do repositório deles, já fez.

$ dpkg -S /usr/bin/npm
nodejs: /usr/bin/npm

$ apt policy nodejs
nodejs:
  Installed: 10.19.0-1nodesource1
  Candidate: 10.19.0-1nodesource1
  Version table:
 *** 10.19.0-1nodesource1 500
        500 https://deb.nodesource.com/node_10.x bionic/main amd64 Packages
        100 /var/lib/dpkg/status
     8.10.0~dfsg-2ubuntu0.4 500
        500 http://pt.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages
     8.10.0~dfsg-2ubuntu0.2 500
        500 http://security.ubuntu.com/ubuntu bionic-security/universe amd64 Packages
     8.10.0~dfsg-2 500
        500 http://pt.archive.ubuntu.com/ubuntu bionic/universe amd64 Packages
1 Curtiu

Instalei e funcionou à primeira.

Linux goldBoste 4.15.0-74-generic #84-Ubuntu SMP Thu Dec 19 08:06:28 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

Debug:

[email protected] install /home/samu/node_modules/autocosts/node_modules/libxmljs
node-pre-gyp install --fallback-to-build --loglevel http

node-pre-gyp WARN Using request for node-pre-gyp https download
node-pre-gyp http GET https://github.com/libxmljs/libxmljs/releases/download/v0.19.7/node-v64-linux-x64.tar.gz
node-pre-gyp http 200 https://github.com/libxmljs/libxmljs/releases/download/v0.19.7/node-v64-linux-x64.tar.gz
[libxmljs] Success: “/home/samu/node_modules/autocosts/node_modules/libxmljs/build/Release/xmljs.node” is installed via remote

[email protected] install /home/samu/node_modules/autocosts/node_modules/phantomjs-prebuilt
node install.js

PhantomJS not found on PATH
Downloading https://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-linux-x86_64.tar.bz2
Saving to /tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2
Receiving…
[========================================] 100%
Received 22866K total.
Extracting tar contents (via spawned process)
Removing /home/samu/node_modules/autocosts/node_modules/phantomjs-prebuilt/lib/phantom
Copying extracted folder /tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2-extract-1582050181146/phantomjs-2.1.1-linux-x86_64 → /home/samu/node_modules/autocosts/node_modules/phantomjs-prebuilt/lib/phantom
Writing location.js file
Done. Phantomjs binary available at /home/samu/node_modules/autocosts/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs

[email protected] postinstall /home/samu/node_modules/autocosts/node_modules/core-js
node -e “try{require(‘./postinstall’)}catch(e){}”

Thank you for using core-js ( GitHub - zloirock/core-js: Standard Library ) for polyfilling JavaScript standard library!

The project needs your help! Please consider supporting of core-js on Open Collective or Patreon:

https://opencollective.com/core-js
Denis Pushkarev | creating core-js | Patreon

Also, the author of core-js ( zloirock (Denis Pushkarev) · GitHub ) is looking for a good job -)

[email protected] postinstall /home/samu/node_modules/autocosts
node build.js -cm -r prod && node bin/index.js --print --pdf -r prod

Release: ‘prod’
Making a clean copy from src/ to bin/
Files from src/ to bin/ copied successfully
Copying npm packages files to bin/
Copied: [jquery, jquery-color, jquery-sidebar, pdfmake, chart.js, smart-app-banner]

Concatenating CSS files
Merged file mergedInit.css from: style.css, responsive.css and fonts.css.
Merged file mergedDeferred.css from: colors.css, results.css and smart-app-banner.css.
Minify js, html/hbs, css and json files
Running script build/minifyFiles.js
[================================================================================] 100%

All files minified successfully

Run node bin/index.js to start application with default options
or node bin/index.js -h for more information

Release: ‘prod’

Running script at /home/samu/node_modules/autocosts/bin
Listening on port 3028
To stop server press CTRL+C


** The Car Costs Calculator **
** can be now accessed on http://localhost:3028 **



2 Curtiram

Então funciona :wink:

1 Curtiu

já agora @samuel, depois de instalares chegaste a ir a http://localhost:3028 para testar?

Claro que sim! Uso amiúde, para demonstrar a amigos o custo real de um automóvel. Nunca têm percepção…

A título de sugestão, estar a clicar 50x em “seguinte” aborrece-me. Preferia duas ou três páginas, ou tudo corrido de uma só vez…

2 Curtiram

Podes usar simplesmente a tecla TAB ou Enter! Pensámos nessa questão, mas reparámos que mostrar vários campos duma vez “assustava” o visitante e fazia-o sair mais cedo.