2016-12-06 152 views
0

我以前使用CDN中的角度,如下所示。从npm运行角度?

<script src="//code.angularjs.org/1.4.0/angular.js"></script> 

从节点加载应用程序索引如下。

app.use(function (req, res) { 
    res.sendFile(__dirname + '/client/index.html'); 
}); 

然而,在试图捆绑使用类似browserify一切的希望......我刚才NPM安装角度,并列入角从node_modules代替CDN如下。

<script src="/node_modules/angular/angular.js"></script> 

但是,现在看来我的角度没有被识别,因为我得到以下错误。

Uncaught SyntaxError: Unexpected token <    angular.js:1 

我怎样才能让我的角度应用程序加载,现在我使用的是npm verison?

+0

使用角度CLI,它的超级容易安装,快走吧,会解决很多问题与得到的角度开始。 https://github.com/angular/angular-cli – Paddy

+0

@Paddy如果我没有弄错... CLI是Angular 2.我仍然使用Angular 1.4。 – Grateful

+0

@ greateful,不好意思删除了1.4.0版本。是的,它是2.0> – Paddy

回答

0

使用express.static提供静态内容,复制所有的静态内容作为构建过程的一部分public目录或者使用的WebPack

+0

好吧,只是为了确认...你基本上是说我不应该在我的app.js中直接使用'express.static'来添加node_modules(因为添加它使我的应用程序能够再次运行),而是我应该在构建过程中将内容复制到我的客户目录中。那是对的吗?你会怎么说使用'browserify'呢? – Grateful

+0

我猜...如果我使用browserify,那么我可以简单地将结果文件包含在我的客户端文件夹中。 – Grateful

+0

是的。使用browserfiy/webpack将自动为你做这个 – harishr

1

我认为像

app 
|-node_modules 
|-src 
    |-client 
     |-index.html 
    |-app.js 

目录结构传递的名称包含静态资产的目录到express.static中间件功能,以通过app.js直接开始提供文件。

/* app.js */ 
var express = require('express'); 
var path = require('path'); 
var app = express(); 
app.use(express.static(path.join(__dirname,'../'))); 

现在添加脚本标签像

<script src="./node_modules/angular/angular.js"></script> 
+0

我理解这个概念......但不是完全的你的代码。你已经通过'express.static'添加了路径'../',但是在路径中的任何地方我都没有看到提到'node_modules' ...或者'app.js'中的任何地方。如果在应用程序中不允许这样做,那么'node_modules'中的任何内容如何在客户端被识别? – Grateful

+0

我只是设置可共享资产的路径。这里的当前目录'__dirname'是'/app/src /'。所以我将路径设置为应用程序'path.join(__ dirname,'.. /')'。现在,表达中间件能够访问app下的所有可共享资源,即通过index.html在'node_module/angular/angular.js'下。你在你的响应发送代码的顶部添加app.js代码(在你的问题中提到)。希望这是有用的。 – eigenharsha