簡體   English   中英

使用node命令運行時Node.js可以運行,但不能永遠運行

[英]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 startnpm start並運行您的應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM