[英]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.