簡體   English   中英

網站在本地工作/不在Openshift上運行(將本地,全局npm軟件包版本與服務器,全局npm軟件包版本同步)

[英]Site works locally / Not on Openshift (syncing local, global npm package versions with server, global npm package versions)

我正在使用Angular創建一個論壇-它與Node / Mongo交互,因此需要執行很多請求才能用所需的數據填充頁面。 一切都在本地正常運行,但是當我上傳到Openshift時...該網站似乎存在很多錯誤,並且似乎執行的請求(如果不是全部)或請求的一半以上使論壇發揮作用。

我使用的是yeoman MEAN堆棧稱為angular-fullstack 如果您擁有yeoman ,則可以使用yo angular-fullstack創建種子。

我必須更改該種子中的唯一內容,才能將其上傳到openshift:

server.js

...

// Set default node environment to development
process.env.NODE_ENV = process.env.NODE_ENV || 'development';

...

...

// Set default node environment to development
process.env.NODE_ENV = process.env.NODE_ENV || 'production';

...

上一行在lib / config / express.js中引用了以下代碼:

if ('development' === env) {
  app.use(require('connect-livereload')());

  // Disable caching of scripts for easier testing
  app.use(function noCache(req, res, next) {
    if (req.url.indexOf('/scripts/') === 0) {
      res.header('Cache-Control', 'no-cache, no-store, must-revalidate');
      res.header('Pragma', 'no-cache');
      res.header('Expires', 0);
    }
    next();
  });

  app.use(express.static(path.join(config.root, '.tmp')));
  app.use(express.static(path.join(config.root, 'app')));
  app.set('views', config.root + '/app/views');
}

if ('production' === env) {
  app.use(compression());
  app.use(errorHandler());
  app.use(favicon(path.join(config.root, 'public', 'favicon.ico')));
  app.use(express.static(path.join(config.root, 'public')));
  app.set('views', config.root + '/views');
}

...

// Error handler - has to be last
if ('development' === app.get('env')) {
  app.use(errorHandler());
}

因此,如果您注意到該production代碼段有什么問題,那就讓我知道,這就是正在運行的代碼。

另外,需要更改Mongo URI才能與我在Openshift上設置的MongoDB盒一起使用:

mongo: {
uri: process.env.MONGOLAB_URI ||
     process.env.MONGOHQ_URL ||
     process.env.OPENSHIFT_MONGODB_DB_URL+process.env.OPENSHIFT_APP_NAME ||
     'mongodb://whateveritwas'
}

mongo: {
uri: process.env.MONGOLAB_URI ||
     process.env.MONGOHQ_URL ||
     process.env.OPENSHIFT_MONGODB_DB_URL+process.env.OPENSHIFT_APP_NAME ||
     'mongodb://admin:xxxxx@127.10.13.X:27017/hackabox' //the X's are to protect me
}

最初,要使其上傳到Openshift,必須在項目文件夾中運行yo angular-fullstack:openshift ,但是我已經這樣做了,所以現在要做的就是在Openshift上更新我的代碼:

  1. 進入控制台中的項目文件夾,然后鍵入grunt build (這將創建dist文件夾)

  2. 轉到dist文件夾,將所有內容添加到git並運行git push

之后,我可以轉到Openshift URL並查看該站點。

現在真正發生的是(我正在關注的)-是當您轉到可以查看該帖子的頁面時(它的內容,它的作者,它的評論)-您可以添加評論,並且它們最初會顯示是因為角度的工作原理...但是當我導航離開並返回時...此代碼似乎未按預期執行:

$scope.loadpost = function() {
  $http.get('/api/posts/'+$routeParams.id).success(function (data) {
    $scope.post = data;
    $scope.comments = $scope.post.comments;
    console.log('this is scope comments ' + $scope.comments);
    if($scope.comments[0] !== undefined) {
      $scope.commentstring.empty = '';
    }
  });
};

出於測試目的...我在后控制器的頂部調用它,如下所示:

$scope.loadpost();

我也在頁面加載時使用ng-init調用它,如下所示:

<div ng-init="loadpost()">

這是我要詳細說明問題的地方

我知道這是多余的...但是重點是...頁面加載時永遠不會調用該函數...並且從數據庫獲取所需的所有帖子內容都不會到達,因為請求永遠不會發生-我可以看到控制台中什么都沒有發生-您也可以在頁面的“論壇”部分中查看我在說什么-http://hackabox-eamonbenproject.rhcloud.com/forum 要發布信息,您必須先以用戶身份注冊...然后您可以通過以下方式查看我在說什么:進入論壇,單擊其中一則信息...發表評論...,然后瀏覽並回來...您不必發表評論,您將看不到任何內容...但是它將幫助您看到問題,因為創建評論時,應該會發生一個PUT請求,並進行更新帖子,但那也永遠不會發生...以及一堆也不會被調用的GET請求。 另外,我注意到(至少一次)...如果我在論壇中做某事...然后導航到“設置”頁面,則有時徽標消失了...

我開始認為運行grunt build時進行的縮小過程正在弄亂代碼...因此當將其加載到openshift時,它會變得非常有bug ...但這只是預感-我猜為了檢驗我的理論,我想知道是否有沒有縮小就上傳到Openshift?

謝謝!

UPDATE

正如我今天和Pogrindis討論的那樣,當應該發生請求時,節點在openshift上登錄時出錯。 它在節點日志中說這是Express錯誤...並且我們意識到openshift上npm的全局版本正在使用3.2.5,而我正在使用的種子使用express v4.2.0(這就是我所使用的)全球,本地)。 我正在將本地的全球快車npm降級到3.2.5,以查看是否可以解決問題...但是向Pogrindis +1以便向我介紹節點版本管理器...以及必須同步在Openshift上全局安裝的任何npm軟件包的版本! 將保持所有人的狀態,以確保此問題得以解決!

很難回答的問題。 有很多要看的。

版本-ING

版本中的節點很大,您可能有一個錯誤的版本,並且可能會引起粉絲的注意。

我想到了一個特別的VERSION Saving github主題。

如果這不是問題,則仍然需要記住,它不是包含版本控制的強類型lang。

每種情況都不同。

https://github.com/npm/npm/issues/3417

此問題“ FIX”將殺死使用先前(次要)版本的許多用戶。 您需要具體說明版本。 (我以此為例)

Node會很好地解決很多版本問題,除非您指定版本,否則它將獲得最新版本。

因此,除非在軟件包中指定了版本,否則在本地(經過3個月的辛苦勞動)機器上工作毫無意義。

您的服務器將僅具有最新版本。

從問題開始..只能是版本問題。

暫無
暫無

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

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