2016-12-06 81 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