Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 为REST API设置节点环境-我的头发变灰了_Node.js - Fatal编程技术网

Node.js 为REST API设置节点环境-我的头发变灰了

Node.js 为REST API设置节点环境-我的头发变灰了,node.js,Node.js,我在这里非常谦虚,来到这个社区。我还不了解jack的节点环境,我也是这里唯一的节点开发人员。一个人的团队正在构建我的第一个节点RESTAPI。(是的,我们真正需要的是更多的人,他们已经知道比我多一点的节点来帮助这个学习过程) 我已经在网上搜索了数小时,试图做我的尽职调查。但坦率地说,我只是没有在设置Node.js环境以及设置本地与其他环境构建方面找到太多信息。首先,刚开始建立一个本地的建设-婴儿步骤是所有我正在寻找。。。在现实世界中。大多数博客文章最多只显示最简单的开发环境。更糟糕的是,大多数博

我在这里非常谦虚,来到这个社区。我还不了解jack的节点环境,我也是这里唯一的节点开发人员。一个人的团队正在构建我的第一个节点RESTAPI。(是的,我们真正需要的是更多的人,他们已经知道比我多一点的节点来帮助这个学习过程)

我已经在网上搜索了数小时,试图做我的尽职调查。但坦率地说,我只是没有在设置Node.js环境以及设置本地与其他环境构建方面找到太多信息。首先,刚开始建立一个本地的建设-婴儿步骤是所有我正在寻找。。。在现实世界中。大多数博客文章最多只显示最简单的开发环境。更糟糕的是,大多数博客帖子都在谈论网站设置(BrowsifSh_uu_u)之类的东西。我在做一个RESTAPI,而不是一个网站

我需要一些资源来开始,要么我只是没有正确地搜索节点,要么就是很难找到它们。我想了解一下如何设置环境变量,如何使用gulp和这些变量来运行不同的环境情况,以及人们如何管理他们的持久层,如数据库连接字符串,等等…我假设这也是通过gulp任务读取包含连接字符串的配置文件而自动实现的?我真的不确定,没有太多好的例子

这就是为什么我在这里希望找到一些这条路线,通过张贴在这里。(希望能对我目前的gulpfile发表评论……这是一个很好的方法还是根本不接近正确的轨道,或者我应该从哪里开始构建和环境约定和任务?)

最好能找到一篇好文章,让你在节点开发人员的生活中度过一天

我目前在哪里?

<强>我的API <强>:嗯,我已经建立了几个Koa.js endpoints,我有一些控制器来接受请求,通过使用网关节点模块来处理它,我所说的网关层中有一些CRUD持久化方法,它调用底层的模型类集,这意味着真正的CRUD调用真实的DB和一些模拟用于我的测试,等等。在这一点上非常基本……所有测试都是通过Mocha.js(BDD样式)驱动的

我的一天:现在,我开始工作了,我已经设置了我的mocha.js测试环境,我至少能够测试我的代码的开发,并让测试在存储上很好地运行。我可以通过终端中的mocha报告观看我的文件和测试运行。我的应用程序在运行,诸如此类

我的问题:但除了通过吞咽实现自动化之外,我真的没有实现过这么多。我想了解更多关于设置环境变量的信息,当开发人员准备好构建并推送到git、yada-yada时会做什么,然后最终如何切换环境,推送到其他服务器时会做什么,以及通过任何有助于实现这一点的配置或吞咽任务所做的一切。我只需要一个这种生态系统的好例子。任何一种例子,但现实的东西都会非常有用

所以…这里是我当前的一个的一瞥。现在有了babel transpiler的构建内容(是的,我在我的js中使用ES6到ES5代码),但我从其他代码中获得了这一点,但还没有弄清楚这一切是如何工作的。实际上,我现在设置的是我的测试运行和自动化。我禁用了构建内容,因为a)我真的不知道哪些文件应该是app.js、server.js之外的REST API构建的一部分,b)我从一些代码中获取的构建代码通过babel将js文件传输到构建文件夹中,但随后我遇到了代码冲突/与常规代码冲突的问题。例如,下面的build内容将server.js推到一个build文件夹中,当我试图在根目录中运行常规server.js时,它与build/server.js中的代码冲突,所以这一切都是错误的,显然我不知道我应该如何处理构建

'use strict';

require('babel/register');
require("harmonize")();

var gulp = require('gulp'),
    mocha = require('gulp-mocha'),
    gutil = require('gulp-util'),
    babel = require("gulp-babel"),
    server = require('gulp-develop-server'),
    del = require('del');


var config = {
    core: {
        src: '*.js',
        build: {
            src: 'build'
        }
    },
    server: {
        path: ['app.js']
    },
    bs: {
        proxy: 'http://localhost:3000'
    },
    test:{
        root: 'test/**',
        src: {
            bdd: {
                features:'test/bdd/features/**/*-spec.js',
                unit:'test/bdd/unit/**/*-test.js',
                integration: 'test/bdd/integration/**/*-integration.js'
            }
        },
        mocha: {
            reporter: 'spec'
        }
    }
};

gulp.task('default', ['babel','development'], function(){
    gulp.task("watch", function(){
        gulp.watch('**/*.js', ['babel'])
    });
});

gulp.task('development',['mocha-bdd-features', 'mocha-bdd-unit'], function() {
    gulp.watch('**/*.js', ['mocha-bdd-features', 'mocha-bdd-unit']);
});

gulp.task('babel', function () {
    return gulp.src('./*.js')
        .pipe(babel());
        //.pipe(gulp.dest('build'));
});

gulp.task('build', ['clean'], function () {
});

gulp.task('clean', del.bind(
    null, ['build/*'], {dot: true}
));

gulp.task('server:start', function() {
    server.listen( { path: config.server.path});
});

gulp.task('server:restart', function() {
    server.restart();
});

gulp.task('mocha-bdd-features', function() {
    process.env.PORT = 8001;
    return gulp.src([config.test.src.bdd.features], { read: false })
        .pipe(mocha({
            compilers: {
                js: babel
            },
            reporter: config.test.mocha.reporter,
            ui: 'bdd'
        }))
        .on('error', gutil.log);
});

gulp.task('mocha-bdd-unit', function() {
    process.env.PORT = 8002;
    return gulp.src([config.test.src.bdd.unit], { read: false })
        .pipe(mocha({
            compilers: {
                js: babel
            },
            reporter: config.test.mocha.reporter,
            ui: 'bdd'
        }))
        .on('error', gutil.log);
});

gulp.task('mocha-bdd-integration', function() {
    process.env.PORT = 8003;
    return gulp.src([config.test.src.bdd.integration], { read: false })
        .pipe(mocha({
            compilers: {
                js: babel
            },
            reporter: config.test.mocha.reporter,
            ui: 'bdd'
        }))
        .on('error', gutil.log);
});

gulp.on('err', function(e) {
    console.log(e.err.stack);
});
迄今为止,我的package.json脚本:

  "scripts": {
    "start": "gulp",
    "build": "gulp build", // I was running this for a while
    "release": "gulp build --release", //I haven't used this yet or know if I even will yet
// I definitely use these, I set these up myself
    "test-bdd-features": "gulp mocha-bdd-features",
    "test-bdd-unit": "gulp mocha-bdd-unit",
    "test-bdd-integration": "gulp mocha-bdd-integration"
  },
基本上,作为一名开发人员,我现在拥有gulpfile的方式是在bash提示符下键入“gulp”(在我的情况下,是从Webstorm中的终端),它运行默认的gulp任务,然后在这一点上首先执行一些其他任务,到目前为止发生了一些事情:

  "scripts": {
    "start": "gulp",
    "build": "gulp build", // I was running this for a while
    "release": "gulp build --release", //I haven't used this yet or know if I even will yet
// I definitely use these, I set these up myself
    "test-bdd-features": "gulp mocha-bdd-features",
    "test-bdd-unit": "gulp mocha-bdd-unit",
    "test-bdd-integration": "gulp mocha-bdd-integration"
  },
  • 在第一次大口喝的时候,它会运行我所有的摩卡测试
  • 监视mocha的所有js文件,以便在保存任何js代码更改时运行mocha测试
  • 真的,就是这么回事。我可以正常运行节点服务器等等。但这是非常基本的。我在我的dumb app.js文件中硬编码了愚蠢的app.listen()端口,这显然是……很好的硬编码

    老实说,我为不同的测试套件提供了不同的端口,因为我发现由于端口冲突,我不得不这样做,但可能这只是因为我做了一些奇怪的事情,不确定这是否是运行验收测试和单元测试时使用不同端口的标准,但我假设是这样

    啊!!请给我打电话

    因此,在这一点上,我想对如何度过这一关大发雷霆:

  • 如何为restapi设置一个真正的构建(好吧,你可以通过babel将js代码传输到哪里,什么地方,等等?)
  • 用于设置任务、配置等的生态系统,用于在不同的环境中自动生成、推送和运行代码。这看起来像什么
  • 在不同的环境中拉取代码,并在不同的服务器场景(开发、质量保证、阶段、产品)上运行这些和不运行的代码
  • 因为我知道肯定会有人回应是的,我理解“有一百万种方法可以做到这一点
    var config = require('config.json');
    
    // all your require'd stuff
    
    // this is helpful, 'cause you can do stuff like "gulp --production"
    var argv = require('yargs').argv;
    
    var paths = {
      sass: ['some/path/to/sass'],
      // various other paths
    };
    
    gulp.task('sass', compileSass);
    gulp.task('html', html);
    gulp.task('default', watch);
    // etc.
    
    // then, in pretty alphabetical order
    function compileSass() {
      return gulp.src(paths.sass)
             .pipe(doSomeCoolStuff());
    }
    
    function html() {
      // etc.
    }
    
    function watch() {
      compileSass();
      html();
    
      if(argv.production) {
        someSpecificProductionFunction();
      }
    
      gulp.watch(paths.someAwesomePaths, ['someTask']);
    }