在节点中使用require('angular')给出Window不定义

所以我对节点是全新的,但我想出了如何安装node_modules。 我想弄清楚的是如何正确地在代码中包含“Angular”。

所以从一个新的快递4起,我做了:

npm install --save angular 

然后我进入了routes/index.js并添加了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; 

但是当我做节点开始时,我得到一个错误,说:

 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) 

什么是正确的方式来包括angular?

Angular是客户端幻灯片脚本库。 节点JS需要加载节点模块,而Angular不是节点模块。

在你的HTML页面你应该这样做:

 <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> 

更新:基于评论。 Angular模块 – https://www.npmjs.com/package/angular

为您提取angular度js文件并将其保存在节点模块文件夹中。 Angular仍然是一个客户端库,您需要在HTML中添加一个脚本标签来使用angular度。 你不应该在节点代码中要求它。 请检查该链接中提供的示例。

否则你可以考虑在客户端使用require js,js,browserify等

使用webpack版本3.4.1更新@ AnujYadav的答案:

安装angular度:

 npm install angular --save-dev 

configuration(在webpack.config.js文件中):

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

在html页面中:

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