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