[英]Node.js works when run with node command but not with forever
我有一個Node.js應用程序,可以通過以下命令正常運行: node app.js
它啟動,我可以轉到我的服務器地址並查看該應用程序是否正常運行。 但是,當我嘗試永久運行該應用程序(即使我未登錄時也要保持該應用程序在服務器上運行)時,請使用以下命令: ./forever start ../../../app.js
我在日志文件中收到以下錯誤:
錯誤:無法在視圖目錄“ / root / ExerciseApp / node_modules / forever / bin / views”中查找視圖“ home”
這是我的目錄結構:
ExerciseApp
/nbproject
project.properties
project.xml
/public
/css
style.css
/scripts
buttons.js
/views
/layouts
main.handlebars
home.handlebars
update.handlebars
app.js
.gitignore
dbcon.js
package.json
這是app.js的相關部分:
//*****Express stuff*********
var express = require('express');
var app = express();
app.use(express.static('public'));
//*****BodyParser stuff*******
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
//*****Handlebars stuff******
//Create instance of handlebars let it know default layout is 'main'
//Default layout is the area all the other contents will be inserted
var handlebars = require('express-handlebars').create({defaultLayout:'main'});
//.handlebars extensions are managed by handlebars
app.engine('handlebars', handlebars.engine);
//Lets us ignore .handlebars extensions
app.set('view engine', 'handlebars');
var helpers = require('handlebars-helpers')();
var moment = require('moment');
//*****MySQL stuff******
var mysql = require('./dbcon.js');
app.set('port', 3645);
如果執行命令./forever list
,我可以看到該應用程序正在運行,但無法訪問該頁面。
編輯:我正在Debian Linux上運行它
除非您提供更多數據,並且假設操作系統是Linux並使用npm install forever -g
永久安裝,否則您應該做的是forever start [../path/to/filename]
,而不是./forever
(這會嘗試在您所在的目錄中運行名為“ forever”的二進制文件。
您有兩種選擇:
a)按照我告訴你的方式從主目錄永久運行
b)在您的app.js中使用絕對路徑,或../../../../node_modules/forever的相對路徑
我推薦一個)。
嘗試使用dirname
以使您的路徑相同,而不管您的應用程序如何運行。
所以你會有類似這些陳述的東西
app.set('views', __dirname + '/views');
和
app.use(express.static(__dirname + 'public'));
試試看,看看是否有效!
當您從node_modules永久運行時,您的工作目錄就不可用了。 而是在您的package.json中添加一個“開始”腳本:
scripts: [
"start": "forever start app.js"
]
這種方法使用您在package.json中指定的永遠的版本,並且不需要與-g一起安裝任何內容。 同樣,工作目錄將是包含app.js的文件夾,並且一切正常。
現在,任何系統上的任何用戶都應該能夠運行npm install
然后npm start
並npm start
並運行您的應用程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.