2017-02-26 44 views
0

導入模塊我試圖導入一個ExpressJS應用中的一些模塊,但它引發以下錯誤:錯誤而ExpressJS

Error: Cannot find module './public/js/date.js'
....more error logs...
at Object. (/home/user007/todoApp_SSRendered/routes/route-add.js:2:23)

我有一個模塊的一些深層嵌套的文件夾中所有散落在地。我的文件夾結構是這樣的。我認爲這與我如何爲模塊指定路線有關。

enter image description here

app.js導入模塊路由main.js位於路線文件夾

const mainRoute = require('./routes/route-main.js')
app.use('/', mainRoute)

路由main.js另一方面,導入所有其他模塊內部的走相同的路線夾

const addTask = require('./routes/route-add.js') + ..... 其他三個剩餘的文件 ...
let taskToUpdate = require('./public/db/tasks.json')

去一個水平比較深,路線夾中的所有其他4個文件(除路由main.js),要求JS文件夾中的兩個文件

const newDateFormat = require('./public/js/date.js')
const writeFile = require('./public/js/writeFile.js')

所以整體模塊依賴鏈接(要求)是一樣的東西:

app.js - >main.js - >(路由添加,路由刪除...) - >(日期,WriteFile的)

注意:在app.js,我只需要main.js等爲別人(沒有雙重需要相同的模塊)。我使用的是Express 4.14.1,並且具有Pug和body-parser作爲剩餘的依賴關係。
此應用程序完全服務器端渲染,如果有幫助。

謝謝:)

回答

1

這是一個相對路徑的問題,因爲route-main.js/public不在同一個文件夾,則需要更換:

let taskToUpdate = require('./public/db/tasks.json') 

let taskToUpdate = require('../public/db/tasks.json') 

並檢查是否需要其他文件夾中相對路徑正確的文件。

+0

哦,好的。所以如果我要求從外部不同的文件夾1級別的任何東西,我需要使用** ../fullPathName **對嗎?我也看到了一個地方,當你從同一個文件夾中導入模塊時,你只需要執行**/moduleName **。我很困惑路由路徑使用/。感謝您的回覆:) –

+0

是的,./來自同一個文件夾,而../是1層外部。如果您使用的是webpack,而您想避免這種情況,則解析功能可以幫助您: https://webpack.js.org/configuration/resolve/ – paqash