Este es nuevamente otro error que estoy obteniendo siguiendo un libro de desarrollo de pila MEAN. Acabamos de agregar un nuevo módulo de usuarios y un servicio de usuarios para permitir que angular use la información de usuario de un usuario autenticado. Recibo un error 500 en la terminal para el siguiente archivo

'/users/users.client.module.js'

Este es el archivo de servicios asociados que lo acompaña. Por lo que he leído, esto es un error de Mongoose. ¿Por qué aparece esto? Ni siquiera he autenticado a un usuario todavía, esto sucede al cargar la página para index.

Controlador de índice

exports.render = function(req,res) {

res.render('index', {
    title: 'Hello World',
    user: JSON.stringify(req.user)
});

};

Index.ejs

<!DOCTYPE html>

<html xmlns:ng="http://angularjs.org">
<head>
    <title><%= title%></title>
</head>
<body>
    <% if (user) { %>
        <a href='/signout'>Sign Out</a>
    <% } else { %>
            <a href='/signup'>Sign-up</a>
            <a href='/signin'>Sign-in</a>
    <% } %>

    <h1><%= title%></h1>

    <section ng-view></section>

    <script type="text/javascript">
        window.user = <%- user || 'null' %>
    </script>

    <script type="text/javascript" src="/lib/angular/angular.js"></script>
    <script type="text/javascript" src="/lib/angular-route/angular-route.js"></script>
    <script type="text/javascript" src="/users/users.client.module.js"></script>
    <script type="text/javascript" src="/users/services/authentication.client.service.js"></script>
    <script type="text/javascript" src="/application.js"></script>
    <script type="text/javascript" src="/example/example.client.module.js"></script>
    <script type="text/javascript" src="/example/controllers/example.client.controller.js"></script>
    <script type="text/javascript" src="/example/config/example.client.routes.js"></script>

</body>

Módulo de usuarios

angular.module('users',[]);

Servicio de autenticación de usuarios

angular.module('users').factory('Authentication', [
function(){
    this.user = window.user;

    return {
        user: this.user
    };
}
]);

Editar - 2/2/2016 Se reordenaron las etiquetas de script en la vista para este pedido, pero aún así no se pudo.

    <script type="text/javascript" src="/lib/angular/angular.js"></script>
    <script type="text/javascript" src="/lib/angular-route/angular-route.js"></script>


    <script type="text/javascript" src="/example/example.client.module.js"></script>
    <script type="text/javascript" src="/example/controllers/example.client.controller.js"></script>
    <script type="text/javascript" src="/example/config/example.client.routes.js"></script>

    <script type="text/javascript" src="/users/users.client.module.js"></script>
    <script type="text/javascript" src="/users/services/authentication.client.service.js"></script>

    <script type="text/javascript" src="/application.js"></script>
1
Andrew Bettke 29 ene. 2016 a las 03:30

4 respuestas

La mejor respuesta

El código fuente del libro genera un error al utilizar el módulo users.client.module.js. En mi análisis, el archivo estático /users/users.client.module.js cargado en index.ejs parecía interpretarse como una ruta del servidor / users /: userId que lleva a buscar un usuario en MongoDB con ID user.client.module. js. El problema se ha resuelto colocando la instrucción app.use(express.static('./public') al comienzo de la configuración (después de la instrucción var app = express(); por ejemplo) en el archivo de configuración express.js, pero seguro antes de las instrucciones de rutas require.

NOTA: El autor agregó esta línea en el repositorio github del libro (justo antes del cierre," devolver aplicación "):

4
JDev 18 oct. 2016 a las 15:44

Tuve el mismo problema, pero estaba ejecutando desde pm2. Después de apagar pm2 y ejecutar manualmente node server.js funcionó bien. No se porque ...

0
Aurora0001 17 nov. 2016 a las 17:23

Reubicación

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

No funcionó para mí. Pero simplemente se cambió el nombre del directorio public/users. (gracias Bsord @ disqus)

0
Benjamin W. 29 abr. 2016 a las 16:08

Tuve el mismo problema y se resolvió si comentas en users.server.routes.js este código:

app.route('/users')
    .post(users.create)
    .get(users.list);

app.route('/users/:userId')
    .get(users.read)
    .put(users.update)
    .delete(users.delete);

app.param('userId', users.userByID);
1
j.son 29 ene. 2016 a las 15:08