繁体   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