簡體   English   中英

NodeJS / CloudFoundry-失敗:應用程序上傳無效:Symlink指向根文件夾之外

[英]NodeJS/CloudFoundry - failed: The app upload is invalid: Symlink(s) point outside of root folder

我正在IBM上測試CloudFoundry,並且正在運行NodeJS。

嘗試cf push我的應用程序時,出現以下錯誤:

failed: The app upload is invalid: Symlink(s) point outside of root folder

在我看來,我有以下代碼:

return res.sendFile(path.join(__dirname +'/tvshows/'+ guide +'.html'));

不使用path.join時,只需使用:

return res.sendFile(path.join('./tvshows/'+ guide +'.html'));

我得到這個錯誤:

TypeError: path must be absolute or specify root to res.sendFile

該怎么辦?

我也嘗試過類似path.join((process.env.BUILD_DIR || __dirname),類的東西path.join((process.env.BUILD_DIR || __dirname),return res.sendFile('index.html', { root: path.join(__dirname, 'tvshows', guide) });但沒有運氣。

失敗來自於我的node_modules文件夾。 .cfignore node_modules/添加.cfignore可以解決此問題。

您沒有提到正在使用的cf cli的版本,但是我認為這是從6.34.0版本開始的預期行為。

現在,push在應用程序文件中保留了相對的符號鏈接。 這使使用npm鏈接使用Node.js應用程序更加容易,但是請注意,當它檢測到指向應用程序文件夾外部的符號鏈接(例如,包含外部符號鏈接的node_modules文件夾)時,它現在會出錯。

https://github.com/cloudfoundry/cli/releases/tag/v6.34.0

我認為您正在進入第二部分,“當它檢測到指向應用程序文件夾外部的符號鏈接時如何出錯”。 這與應用程序中的代碼無關,而是在項目文件夾中的某個地方有一個符號鏈接,該符號鏈接引用了另一個不在項目根目錄下的文件。

如果您使用的是類似Unix的系統,則可以運行find . -type l find . -type l查找當前目錄下的所有符號鏈接。 然后,您只需要找出哪個指向項目根目錄之外即可。

選項是刪除該符號鏈接,將其指向項目根目錄下的某個位置,或使用.cfignore忽略該文件(最終您將執行此操作)。

希望有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM