Resolvendo o erro "npm ERR! missing script: start"

Para fazer o deploy da sua aplicação em Node.js é preciso tomar cuidado com um arquivo chamado package.json.

Você precisa ter certeza que dentro das configurações de scripts, terá o script de start, como mostra nesse exemplo de package.json.

{
“name”: “umbler-node”,
“version”: “1.0.0”,
“description”: “”,
“main”: “app.js”,
“scripts”: {
"start": "node app"
},
“author”: “”,
“license”: “ISC”,
“dependencies”: {
“check-node-version”: “^2.1.0”,
“cluster”: “^0.7.7”,
“express”: “^4.15.2”,
“os”: “^0.1.1”
}
}

O “start”:“node app” ou “start”:“seu arquivo de inicialização” precisa existir para a aplicação rodar na Umbler.

cara, bacana, mas isso é a mesma informação do tutorial…não estou conseguindo resolver desta forma

Oi Lucas!

Bem-vindo à comunidade da Umbler!

Você tem certeza que o seu arquivo principal se chama app.js? Nesse exemplo o comando executado é node app, pois o arquivo principal tem esse nome. Se o seu arquivo principal tiver outro nome, como index.js, server.js, ou algum outro, é preciso colocar esse nome no comando.

Sim Daniel, felizmente consegui resolver parte do problema: eram dois, o código de execução do script não estava completo, “servidor.js” em vez de “node servidor.js”, e o commit não estava sendo executado corretamente também…

Feito isto continuo com um problema de carregamento do estilo da página… sobe apenas o código html do index, nada mais( http://trilhas-co.umbler.net/ ).

Estou vendo se consigo usar o express para resolver isto… Obrigado!

Oi Lucas!

Para entregar arquivos estáticos no Express, como imagens, CSS e JS, você pode usar o express.static, especificando o nome da pasta onde os arquivos ficam.

https://expressjs.com/pt-br/starter/static-files.html

Por exemplo, você pode colocar todos os arquivos estáticos dentro de uma pasta public, e usar a seguinte configuração no Express:

app.use(express.static('public'))

Então digamos que você tenha uma imagem no caminho public/imgs/image.jpg, você deve conseguir chamar ela direto por <img src="imgs/image.jpg" no HTML.

desculpa ai por me intrometer, mas pra ficar ainda melhor, dá pra fazer da seguinte maneira:

    const path = require('path') //importando a biblioteca path nativa do nodejs

    app.use(express.static(path.join(__dirname, 'public')))  
//ao acrescentar o__dirname evita alguns 
    //erros do path da aplicação.

só complementando a resposta, porque está correta :blush:

2 curtidas