在节点中使用require('angular')会导致Window未定义

时间:2015-03-22 04:39:09

标签: angularjs node.js express

所以我对节点完全不熟悉,但我想出了如何安装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)

包含角度的正确方法是什么?

2 个答案:

答案 0 :(得分:10)

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

在您的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>

更新: 根据评论。角度模块 - https://www.npmjs.com/package/angular

为您获取角度js文件并将其保存在节点模块文件夹中。 Angular仍然是客户端库,您需要在HTML中添加脚本标记以使用angular。您不应该在节点代码中要求它。请检查该链接中给出的样本。

另外,您可以考虑在客户端使用require js,head js,browserify等

答案 1 :(得分:2)

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

安装角度:

npm install angular --save-dev

配置(在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>