前言
三四桃花清和早,五六天中荷叶香。正值年华逍遥叹,化作愁肠渡河人。最近好忙,去了趟巴厘岛,转头又跑了回重庆马拉松,我至今还停留在巴厘岛的蓝天沙滩碧海,重庆的红油辣子毛肚的世界里。在重庆的时候,还严重的水土不服了,一直吐,感觉都快要去见马克思了,好在拖着病恹恹的躯体,成功完赛,也算是一件美事了......这篇文章,我要记录的是一个非常奇怪的报错,主要是因为linux中关于路径的使用和express中理解的不太一样,我在此做个记录和解答,如果有分析不对的地方,还请各路高手给予指点和改正。
问题
我构建了一个node项目,然后将启动程序放到了bin下,程序的路径如下:
其中www为启动程序,app.js为应用入口。
但是在bin下执行,node www后,程序可以正常启动,但是在使用res.render时,总是提示报错:
报错信息很明确,就是说,你的路径不对,在xxxx/bin/下没有views这个文件夹。
我这个程序在win下正常运行,那么怎么就会有问题了呢?
于是我查看了一下线程,我猜测可能是跟启动的路径有关,于是我写了这样一个脚本
export MAIN_JS="./bin/www"
cd $NODE_HOME
echo "Start Node.js ... ...."
nohup node $MAIN_JS \
将启动的路径改为该项目的根路径,问题便解决了,然后直接用node ./bin/www试,程序也可以正常运行。
总结
我感觉,node程序会根据启动的路径不同来确认程序的根路径在哪里,在项目的根路径启动node则,根路径就被认为是程序的启动路径,如果在其他路径启动,则其他路径就会被认为是程序的启动路径。不知道我的理解对不对,请各位高手给予帮助。