Cómo incluir archivos estáticos en express js

Estoy usando el framework express js con node js y en mi archivo server.js, he usado

app.use('/api',router); 

En mi archivo ejs, cuando uso una etiqueta de script

  

Me sale un error “No se puede obtener http: // localhost: 3000 / api / main.js ” ¿Cómo puedo incluir estos archivos en los ejs?

¡¡¡por favor ayuda!!!

Puedes usar el middleware express.static

 app.use('/public', express.static('directory/containing/your/files')); 

El parámetro de express.static es la ruta al directorio que contiene todos los archivos que desea convertir en estáticos (la ruta que proporcione puede ser relativa al directorio donde inicie el proceso del nodo, o una ruta absoluta), el directorio debe Estará disponible en su sistema de archivos.
Entonces puede requerir sus recursos como:
La ruta de assembly ‘/ public’ es opcional, pero se recomienda

Sirve archivos estáticos a través de un middleware incluido en Express – express.static('folder/with/resources') . Lo hace agregándolo a la cadena de middleware usando app.use .

Supongamos que desea servir sus archivos estáticos ubicados en la carpeta /dist local a través de la URL pública /static .

 import express from 'express'; const app = express(); app.use('static', express.static('dist')); 

Lea más sobre esto aquí .

en app.js tienes que agregar acceso a directorio de carpeta estática

 app.use(express.static(path.join(__dirname, 'public'))); 

en carpeta pública agrega tus carpetas de archivos

 --public ----javascript ----css ----img 

dentro de javascript agrega tu main.js

y en ejs agregar