2016-08-18 52 views
0

我有這個基本的文件夾結構的Node.js的項目:運行時錯誤的Node.js應用程序共享客戶端/服務器之間的代碼時

├── project 
    ├── client 
     ├── app 
        ├── assets 
        │   └── css 
        └── components 
         ├── about 
         ├── categories 
         ├── home 
         ├── navbar 
         └── posts 

    ├── common 
     ├── model 
     └── util 
    ├── server 
     ├── api 
     ├── model (deprecated for ../common/model) 
     ├── conf 
     └── db 

server是一個Express API,client是Angular2應用程序中使用此API。我使用Gulp構建正在部署到AWS Elastic Beanstalk的dist文件夾。

重要:dist客戶生活app文件夾,而服務器是根。

一切工作正常,直到我決定服務器客戶這就是點的Node.js我想...)之間共享一些代碼。我創建了一個common文件夾中的項目的根與(其中包括)後模型(/project/common/model/post.ts

服務器/project/server/server.ts我代替:

import {Post} from './model/post' 

爲:

import {Post} from '../common/model/post' 

它工作。


客戶/project/client/app/components/posts/post-list.component.ts我代替:

import {Post} from './post'; // Model was in the same folder here... 

爲:

import {Post} from '../../../../common/model/post'; 

和它編譯罰款,但隨後,當我試圖達到客戶在我的瀏覽器,我得到:

zone.js:101 GET http://127.0.0.1:3000/common/model/post 404 (Not Found)

(index):24 Error: Error: XHR error (404 Not Found) loading http://127.0.0.1:3000/common/model/post

我檢查過了,我的Gulp的構建任務正確地將編譯後的(傳輸的)通用文件移動到dist/common

任何暗示如何着手解決這個問題?非常感謝!

回答

1

推測必須通過瀏覽器才能訪問,但是您的Web服務器是否在公用文件夾中提供文件?

在你快速配置你可能有這樣的事情就可以提供靜態內容:

app.use(express.static(__dirname + '/public')); 

但你是否對你有新的共同文件夾一樣嗎?

+0

謝謝科林,你的假設是正確的。我爲通用文件夾添加了這一行,現在我可以檢索'localhost:3000/common/model/post.js',但是我的客戶端要求'localhost:3000/common/model/post'(沒有擴展名)仍然是404 ... –

+0

好吧,我發現它!我在'systemjs.config.js'中將''common':{defaultExtension:'js'}'添加到我的'packages' var中。 –

相關問題