2015-03-22 14 views
10

Quindi sono completamente nuovo al nodo ma ho capito come installare node_modules. Quello che sto cercando di capire è come includere correttamente 'Angular' nel mio codice.Usare require ('angolare') nel nodo dà Window non è definito

Quindi, da un nuovo Express 4 spin up ho fatto:

npm install --save angular 

Poi sono andato in routes/index.js e ha aggiunto il require('angular'):

var express = require('express'); 
var router = express.Router(); 
require('angular'); 

/* GET home page. */ 
router.get('/', function(req, res, next) { 
    res.render('index', { title: 'Express' }); 
}); 

module.exports = router; 

Ma quando faccio inizio nodo ottengo un errore che dice:

ReferenceError: window is not defined 
    at Object.<anonymous> (/Users/al/Projects/node/podcastsearch/podcast/node_modules/angular/angular.js:26307:4) 
    at Module._compile (module.js:460:26) 
    at Object.Module._extensions..js (module.js:478:10) 
    at Module.load (module.js:355:32) 
    at Function.Module._load (module.js:310:12) 
    at Module.require (module.js:365:17) 
    at require (module.js:384:17) 
    at Object.<anonymous> (/Users/al/Projects/node/podcastsearch/podcast/node_modules/angular/index.js:1:63) 
    at Module._compile (module.js:460:26) 
    at Object.Module._extensions..js (module.js:478:10) 

Qual è il modo corretto di includere angolare?

risposta

7

Angular è la libreria di script di diapositiva client. Il nodo JS richiede carichi moduli nodo e Angular non è un modulo nodo.

nella pagina HTML si dovrebbe fare qualcosa di simile:

<html> 
    <head> 
    <title>My Angular App!</title> 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js"></script> 
    <script src="app.js"></script> 
    </head> 
    <body ng-app="flapperNews" ng-controller="MainCtrl"> 
    <div> 
     {{test}} 
    </div> 
    </body> 
</html> 

Aggiornamento: Sulla base di commento. Modulo angolare - https://www.npmjs.com/package/angular

Recupera i file angolari js e li salva nelle cartelle dei moduli del nodo. Angular rimane ancora una libreria lato client ed è necessario aggiungere un tag script nel proprio codice HTML per utilizzare angolare. Non dovresti richiederlo nel codice del nodo. Si prega di controllare anche gli esempi forniti in quel collegamento.

resto si può pensare di utilizzare richiedono js, ​​js testa, browserify ecc sul lato client

+0

Ho letto la pagina NPM angolare https://www.npmjs.com/package/angular e disse che potevo comprendere tramite gli script o richiedere ('angolare'). Sono pienamente consapevole che l'angolare è il lato client. Sono curioso di sapere perché la pagina del modulo dice che può essere utilizzata tramite require() – allencoded

+2

@allencoded Puoi usare 'require()' negli script lato client usando Browserify per simili. – Brad

+0

Ah grazie brad che lo risolve subito. Sapevo che l'angolare era una libreria lato client che non sapevo abbastanza su require() suppongo. Sapevo che potevo semplicemente includerlo node_modules/angular/angular.js nel mio html ma volevo fare il comando spiffy require() – allencoded

1

aggiornamento per 's risposta @AnujYadav utilizzando webpack versione 3.4.1:

Installare angolare:

npm install angular --save-dev 

Config (in webpack.config.js file):

module.exports = { 
    entry: { 
     angular: path.resolve(__dirname, './node_modules/angular/angular') 
    }, 
    output: { 
     ... 
    }, 
    module: { 
     ... 
    } 
}; 

Nella pagina html:

<script src="/{your_path}/angular.js"></script> 
<script> 
    // you can use 'angular' now  
</script> 
Problemi correlati