我有這個基本的文件夾結構的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
。
任何暗示如何着手解決這個問題?非常感謝!
謝謝科林,你的假設是正確的。我爲通用文件夾添加了這一行,現在我可以檢索'localhost:3000/common/model/post.js',但是我的客戶端要求'localhost:3000/common/model/post'(沒有擴展名)仍然是404 ... –
好吧,我發現它!我在'systemjs.config.js'中將''common':{defaultExtension:'js'}'添加到我的'packages' var中。 –