我的脚本已经为我的服务器做好了准备,除了服务器上没有加载变量,因为看起来文件系统似乎没有在服务器上以相同的方式解释该路径(Ubuntu 14.04 x64 vmlinuz-3.13。 0-57-通用)。当我在OS X 10.11.1上本地测试我的服务器时,一切正常,但在服务器上找不到该文件。
var jsonHourlyFile = './data/jsonHourly.json';
console.log(jsonHourlyFile);
console.log(fs.existsSync(jsonHourlyFile));
if (fs.existsSync(jsonHourlyFile)) { //Why was this in the function in the first place...?
console.log("loaded JsonHourlyFile")
var jsonHourly = jsonfile.readFileSync(jsonHourlyFile);
} else {
var jsonHourly = JSON;
console.log("jsonHourlyFile not found!")
}
这在我的计算机上返回true,在服务器上返回false。我已经使用FileZilla将所有文件正确复制到服务器,并且可以确认它们在那里。
我怀疑它与文件路径有关。虽然我认为使用./
将始终指向正确的地图。谁可以详细说明这个?
答案 0 :(得分:1)
我必须评论你的最后一句:
"虽然我认为使用./将始终指向正确的地图。"
事实并非如此。 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" />
<nav class="navbar navbar-inverse navbar-static-top navbar-custom">
<div class="container-fluid">
<div class="navbar-header"> <a class="navbar-brand" href="#">Locket</a>
<div class="navbar-upper">
<div class="btn-group">
<button type="button" class="btn navbar-btn btn-drop dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{{currentUser}}</button>
<ul class="dropdown-menu">
<li><a href="#">Action</a>
</li>
<li><a href="#">Another action</a>
</li>
<li><a href="#">Something else here</a>
</li>
<li role="separator" class="divider"></li>
<li><a href="#">Separated link</a>
</li>
<li role="separator" class="divider"></li>
<li ng-click="logout()"><a href="#">Log Out</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</nav>
<div class="container">
<div class="row">
<div class="col-sm-12 friendListWindow">
<p class="windowTitle text-center">Friends List</p>
<form class='form-control-inline' ng-submit='addFriend(newFriendUsername)' name='addFriendForm'>
<div class='form-group'>
<input autocomplete='off' class='form-control input-display' type='text' name='newFriendUsername' ng-model='newFriendUsername' required/>
<button class='btn btn-default button-display form-control' type='submit' ng-disabled='!addFriendForm.$valid'><span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
</button>
</div>
</form> <span ng-if='sentRequest' class="friendReqSent">{{friendReqMsg}}</span>
<p class="friendHeaders">Friend Requests</p>
<div class="friendRequests">
<ul class="friendList">
<li class="friendRequest" ng-repeat='friend in friendRequests track by $index'>
<div class='form-control-inline'> <span>New friend request from: {{friend}}</span>
<div class="friendRequestOptions">
<button class='btn btn-default friendButton'><span class='glyphicon glyphicon-ok vertical-center' aria-hidden='true' ng-click='acceptFriendRequest(friend)'></span>
</button>
<button class='btn btn-default friendButton'><span class='glyphicon glyphicon-remove vertical-center' aria-hidden='true' ng-click='ignoreFriendRequest(friend)'></span>
</button>
</div>
</div>
</li>
</ul>
<div class="acceptedfriendRequests">
<ul class="friendList">
<li class="friendRequest" ng-repeat='friend in acceptedfriendRequests track by $index'> <span>{{friend}} accepted your friend request</span>
<button class='btn btn-default friendButton'><span class='glyphicon glyphicon-ok vertical-center' aria-hidden='true' ng-click='acknowledgeFriendRequest(friend)'></span>
</button>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
的含义是&#34;在此目录&#34;中,即脚本执行的位置。
在本地计算机上,您说您的脚本在./
中执行,这意味着您的JSON文件应位于/Users/me/WebstormProjects/WebTest
中。我们知道这是真的,因为脚本适用于您的计算机。
现在,在服务器上,您说脚本在/Users/me/WebstormProjects/WebTest/data/
中执行。因此,除非该特定目录中有一个/root/WebTest/bin
文件夹,其中包含您的JSON文件(因此路径为data/
),否则您的程序将无法按预期执行。
有很多方法可以解决这个问题,我无法分辨哪一个是最好的。您只需要确保本地计算机和服务器具有正确的文件路径,考虑到两个操作系统都不相同,这可能会有很大不同。
有关Wikipedia上路径的详情。