小编Ant*_*rov的帖子

git:忽略生产分支中的源和开发中的缩小文件

我无法找到合理的解决方案,因为我认为这是一个非常简单的任务.考虑source我的项目中有一些目录,其中包含所有源文件.在发展模式,我改变源文件,并咕嘟咕嘟minifies他们进入.min.js.min.css,并将它们放入public目录(澄清,我建立一个Node.js的应用程序).

现在,我有两个分支:master生产和development开发.

master分支上的.gitignore文件

.DS_Store
node_modules
source
...
Run Code Online (Sandbox Code Playgroud)

development分支上的.gitignore文件

.DS_Store
node_modules
public/javascript
public/stylesheets
...
Run Code Online (Sandbox Code Playgroud)

我想要获得的行为:1)忽略缩小的文件以进行开发(每次我更改代码时它们都会被组合和缩小),但保留源代码; 2)忽略生产的源文件(因为当我$ git pull进入生产环境时我不想拥有它们),但要保持缩小.

出于某种原因,当我来回切换,从masterdevelopment,混帐完全删除一些文件,并打破了一切.例如,它擦除了每个模块的所有内容node_modules,强迫我$ rm -rf node_modules && npm install每次切换分支时都会这样做.

很感谢任何形式的帮助.


这里还描述了这个问题:使用git,我如何忽略一个分支中的文件但是在另一个分支中提交它?,但没有可行的解决方案.

git version-control version

7
推荐指数
1
解决办法
1235
查看次数

在微服务之间共享文件

我正在尝试将项目从当前的单体状态转移到微服务架构。该项目在 Node.js 中,所以我开始研究Seneca.js,尤其是它的seneca-mesh模块。将图像处理(裁剪、调整大小等)移动到微服务中似乎是最明智的第一步,因为它现在大大降低了我的应用程序的速度。

当应用程序是单体时,将某些文件传递给文件操作逻辑是没有问题的——只需从本地存储磁盘读取它。然而,对于微服务,如果我们牢记可扩展性,它就会变得更加困难。当然,我可以构建一个图像处理微服务,在同一台主机内扩展它,并在它之间共享我需要的目录,这样它们也可以从本地磁盘读取。

如果我想要一个真正可扩展的微服务,它可以在具有不同 IP 地址但不共享相同文件系统的不同机器上运行和扩展怎么办?我想也许我可以利用 Node 的流 API 并通过 HTTP 或 TCP 或套接字来回发送这些文件,或者您可以命名它。

据我所知,Seneca.js 不能以正确的方式做到这一点。当然,我可以通过 Seneca.js 将文件从主应用程序发送到图像处理服务,如下所示:

fs.createReadStream('/files/hello.jpg')
  .on('data', function(data) {
    seneca.act({ role: 'file', cmd: 'chunk', data: data }, cb);
  })
  .on('end', function(err) {
    seneca.act({ role: 'file', cmd: 'end' });
  })
  .on('error', function(err) {
    seneca.act({ role: 'test', cmd: 'error' });
  });
Run Code Online (Sandbox Code Playgroud)

并分块接收:

seneca.add({ role: 'file', cmd: 'chunk' }, writeToFileCb);
seneca.add({ role: …
Run Code Online (Sandbox Code Playgroud)

node.js microservices seneca

6
推荐指数
2
解决办法
1万
查看次数

Bluebird——在处理程序中创建了一个承诺,但没有从中返回

首先,我知道我必须return保证避免出现此警告。我还尝试按照文档中的null建议返回。考虑这段代码,我在 Mongoose 的预保存挂钩中使用它,但我在其他地方遇到过这个警告:

var Story = mongoose.model('Story', StorySchema);

StorySchema.pre('save', function(next) {
    var story = this;

    // Fetch all stories before save to automatically assign
    // some variable, avoiding conflict with other stories
    return Story.find().then(function(stories) {

        // Some code, then set story.somevar value
        story.somevar = somevar;
        return null;
    }).then(next).catch(next); // <-- this line throws warning
});
Run Code Online (Sandbox Code Playgroud)

我也尝试过(最初)这种方式:

        story.somevar = somevar;
        return next(); // <-- this line throws warning
    }).catch(next);
Run Code Online (Sandbox Code Playgroud)

但它也不起作用。哦,我必须提到,我使用 Bluebird:

var Promise = require('bluebird'),
    mongoose …
Run Code Online (Sandbox Code Playgroud)

javascript mongoose node.js promise bluebird

3
推荐指数
1
解决办法
568
查看次数

重定向后React-router-redux setState警告

我正在为一个带有react,redux,react-routerreact-router-redux的项目构建一个管理应用程序.React-router是v4.0.0,react-router-redux是v5.0.0-alpha.3(安装npm install react-router-redux@next).我正在尝试的是:

  1. 加载应用,
  2. 对后端执行异步调用以查看用户是否已登录(存储在cookie中的令牌),
  3. 如果用户未登录,则重定向到/login并呈现Login组件.

对于异步操作,我正在使用redux-thunk.

Root.js

import React, { Component, PropTypes } from 'react';
import { Provider, connect } from 'react-redux';
import { Route, Switch } from 'react-router-dom';
import { ConnectedRouter, push } from 'react-router-redux';

import Login from './Login';

const App = () => <h1>Dashboard</h1>;
const NotFound = () => <h1>Not found :(</h1>;

class Root extends Component {

  // use componentDidMount as …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-router react-redux react-router-redux

1
推荐指数
1
解决办法
751
查看次数

带有 Passport.js 多个 cookie 的快速会话

我正在尝试使用 Passport.js 和 Express-Session 实现登录功能,它运行良好,

var passport = require('passport'),
    session = require('express-session'),
    MongoDBStore = require('connect-mongodb-session')(session);

var sessionStore = new MongoDBStore({
    uri: config.db,
    collection: 'sessions'
});

var sessionOptions = {
    name: 'very-secure-cookie',
    secret: config.secret,
    resave: false,
    saveUninitialized: true,
    cookie: {
        secure: true,
        maxAge: null
    },
    store: sessionStore
};

app.use(session(sessionOptions));
app.use(passport.initialize());
app.use(passport.session());
Run Code Online (Sandbox Code Playgroud)

这里,maxAgenull,意味着客户端在关闭浏览器窗口时会注销。然而,我想用客户的电子邮件地址存储一个额外的 cookie,以便在<input type="text" name="email">他们稍后回来时想要重新登录时预先填写。

我尝试过app.use()使用另一个会话对象来将电子邮件信息存储在另一个 cookie 中,但由于某种原因,该 cookie 只设置一次(第一个)。

app.use(session(returningSessionOptions));
Run Code Online (Sandbox Code Playgroud)

在任何地方都找不到任何明智的解决方案:(

哦,我不得不提一下,我考虑过将cookie-parser中间件与 一起使用express-session,但文档指出这可能会导致冲突

cookies session node.js passport.js express-session

0
推荐指数
1
解决办法
5635
查看次数