大家好,小弟有一個問題想請問一下。
一直以來,在做Module切分的時候,都會在router檔案當中寫下以下程式碼
{
path: 'pages',
loadChildren: './post/post.module.ts#PostModule'
}
剛好最近重安裝MacOS之後,安裝了最新版的Angular
卻發現上方的Code卻無法執行。
會一直跳出以下錯誤:
之後重整就會不斷跳出此錯誤訊息:
原本以為是自己的Code哪裡有問題,後來發現把 loadChildren 這行註解掉就沒錯了
代表問題在這行。
之後網路上找到以下寫法:
{
path: 'pages',
loadChildren: () => PostModule }
之後發現只要寫成Function就可以執行
但還是不懂為何原本的寫法會無法Work。
以下是我的Angular版本
路徑錯了,請使用絕對路徑,請從 app
那層寫起
{
path: 'pages',
loadChildren: './app/post/post.module.ts#PostModule'
}
你後面的寫法是屬非 LazyLoading 的寫法
{
path: 'pages',
loadChildren: () => PostModule }
我有使用過絕對路徑,但是依然錯誤
下圖是我的檔案結構以及錯誤訊息
你是看看用 tsc 跑看看真正的錯誤是什麼
不需要 ..
吧,直接是 app/post/post.module#PostModule
另外,我很好奇的是,有需要加 .ts 嗎?
我猜問題應該是你搞混了 Routing 的配置或者架構有些問題:
- 你想要載入 ‘./post/post.module.ts#PostModule’,
但是目前從你的 code 似乎沒有設置 ./post/ 這個 path
- 你設置了 ‘./post/post.module.ts#PostModule’ 是 ‘pages’ 的子模組路由,
但從 loadChildren 並沒有看到 pages 的 dir
你應該是想要設置:
{
path: 'post',
loadChildren: './post/post.module.ts#PostModule'
}
我是使用 Path Intellisense
的套件,然後發現如果要到那一層的話,就必須要..
回去
不過目前看起來不是點點的問題,而是後面不需要加.ts
刪除掉.ts之後,就不會有這個問題了。
不過不管怎樣,現在能順利work真的很謝謝您。
1個讚
沒有哦,不是這個問題。
我現在這個架構目前應該沒有什麼太大問題才對。
後來發現把 .ts拿掉就好了
1個讚
其實… path 跟 loadChildren 裡的路徑並沒有一定的關聯…
也沒有 path 設 ‘post’,loadChildren 裡的路徑也要有 ‘post’ 的路徑或同樣的 module name 吧 @@