Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SourceTree grunt not working #641

Closed
kcarrier opened this issue Dec 2, 2016 · 8 comments
Closed

SourceTree grunt not working #641

kcarrier opened this issue Dec 2, 2016 · 8 comments
Assignees
Milestone

Comments

@kcarrier
Copy link

kcarrier commented Dec 2, 2016

All,

I have a new machine and setting up my development environment per the documentation.

When running grunt I receive this error

Path must be a string. Received null Use --force to continue

When using grunt --force I get this

Error: "value" required in setHeader("Access-Control-Allow-Origin", value)

Thoughts?

@kcarrier
Copy link
Author

kcarrier commented Dec 2, 2016

Error: "value" required in setHeader("Access-Control-Allow-Origin", value) at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:354:11) at ServerResponse.res.setHeader (C:\Users\carrierk\Documents\JSDev\CMV\node_modules\connect\lib\patch.js:63:22) at Object.enableCORS [as handle] (C:\Users\carrierk\Documents\JSDev\CMV\Gruntfile.js:10:11) at next (C:\Users\carrierk\Documents\JSDev\CMV\node_modules\connect\lib\proto.js:193:15) at Object.json [as handle] (C:\Users\carrierk\Documents\JSDev\CMV\node_modules\connect\lib\middleware\json.js:42:37) at next (C:\Users\carrierk\Documents\JSDev\CMV\node_modules\connect\lib\proto.js:193:15) at Object.urlencoded [as handle] (C:\Users\carrierk\Documents\JSDev\CMV\node_modules\connect\lib\middleware\urlencoded.js:40:37) at next (C:\Users\carrierk\Documents\JSDev\CMV\node_modules\connect\lib\proto.js:193:15) at Function.app.handle (C:\Users\carrierk\Documents\JSDev\CMV\node_modules\connect\lib\proto.js:201:3) at Server.app (C:\Users\carrierk\Documents\JSDev\CMV\node_modules\connect\lib\connect.js:65:37)

@kcarrier
Copy link
Author

kcarrier commented Dec 7, 2016

I eventually got this working after making some changes to Gruntfile.js

see below.

module.exports = function(grunt) {

  // middleware for grunt.connect
  var middleware = function(connect, options, middlewares) {
    // inject a custom middleware into the array of default middlewares for proxy page
    var proxypage = require('proxypage');
    var proxyRe = /\/proxy\/proxy.ashx/i;

      //var enableCORS = function(req, res, next) {
      //res.setHeader('Access-Control-Allow-Origin', req.headers.origin);
      //res.setHeader('Access-Control-Allow-Credentials', true);
      //res.setHeader('Access-Control-Allow-Methods', 'GET,HEAD,PUT,PATCH,POST,DELETE');
      //res.setHeader('Access-Control-Allow-Headers', req.headers['access-control-request-headers']);
      //return next();
    //};

    var proxyMiddleware = function(req, res, next) {
      if (!proxyRe.test(req.url)) {
        return next();
      }
      proxypage.proxy(req, res);
    };

    middlewares.unshift(proxyMiddleware);
    //middlewares.unshift(enableCORS);
    middlewares.unshift(connect.json()); //body parser, see https://github.com/senchalabs/connect/wiki/Connect-3.0
    middlewares.unshift(connect.urlencoded()); //body parser
    return middlewares;
  };

  // grunt task config
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    tag: {
      banner: '/*  <%= pkg.name %>\n' +
        ' *  version <%= pkg.version %>\n' +
        ' *  Project: <%= pkg.homepage %>\n' +
        ' */\n'
    },
    copy: {
      build: {
        cwd: 'viewer',
        src: ['**'],
        dest: 'dist/viewer',
        expand: true
      }
    },
    clean: {
      build: {
        src: ['dist']
      }
    },
    autoprefixer: {
      build: {
        expand: true,
        cwd: 'dist/viewer',
        src: ['**/*.css'],
        dest: 'dist/viewer'
      }
    },
    cssmin: {
      build: {
        expand: true,
        cwd: 'dist/viewer',
        src: ['**/*.css'],
        dest: 'dist/viewer'
      }
    },
    jshint: {
      build: {
        src: ['viewer/**/*.js'],
        options: {
          jshintrc: '.jshintrc',
          reporter: require('jshint-stylish')
        }
      }
    },
    uglify: {
      build: {
        files: [{
          expand: true,
          cwd: 'dist/viewer',
          src: ['**/*.js', '!**/config/**'],
          dest: 'dist/viewer',
          ext: '.js'
        }],
        options: {
          banner: '<%= tag.banner %>',
          sourceMap: true,
          sourceMapIncludeSources: true,
          compress: {
            drop_console: true
          }
        }
      }
    },
    watch: {
      dev: {
        files: ['viewer/**'],
        tasks: ['jshint']
      },
      build: {
        files: ['dist/viewer/**'],
        tasks: ['jshint']
      }
    },
    connect: {
      dev: {
        options: {
          port: 3000,
          base: 'viewer',
          hostname: '*',
          middleware: middleware
        }
      },
      build: {
        options: {
          port: 3001,
          base: 'dist/viewer',
          hostname: '*',
          middleware: middleware
        }
      }
    },
    open: {
      dev_browser: {
        path: 'http://localhost:3000/index.html'
      },
      build_browser: {
        path: 'http://localhost:3001/index.html'
      }
    },
    compress: {
      build: {
        options: {
          archive: 'dist/viewer.zip'
        },
        files: [{
          expand: true,
          cwd: 'dist/viewer',
          src: ['**', '!**/dijit.css']
        }]
      }
    }
  });

  // load the tasks
  grunt.loadNpmTasks('grunt-contrib-copy');
  grunt.loadNpmTasks('grunt-contrib-clean');
  grunt.loadNpmTasks('grunt-autoprefixer');
  grunt.loadNpmTasks('grunt-contrib-cssmin');
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-contrib-jshint');
  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-contrib-connect');
  grunt.loadNpmTasks('grunt-newer');
  grunt.loadNpmTasks('grunt-open');
  grunt.loadNpmTasks('grunt-contrib-compress');

  // define the tasks
  grunt.registerTask('default', 'Watches the project for changes, automatically builds them and runs a web server and opens default browser to preview.', ['jshint', 'connect:dev', 'open:dev_browser', 'watch:dev']);
  grunt.registerTask('build', 'Compiles all of the assets and copies the files to the build directory.', ['clean', 'copy', 'scripts', 'stylesheets', 'compress:build']);
  grunt.registerTask('build-view', 'Compiles all of the assets and copies the files to the build directory starts a web server and opens browser to preview app.', ['clean', 'copy', 'scripts', 'stylesheets', 'compress:build', 'connect:build', 'open:build_browser', 'watch:build']);
  grunt.registerTask('scripts', 'Compiles the JavaScript files.', ['jshint', 'uglify']);
  grunt.registerTask('stylesheets', 'Auto prefixes css and compiles the stylesheets.', ['autoprefixer', 'cssmin']);
  grunt.registerTask('hint', 'Run simple jshint.', ['jshint']);
};

@kcarrier kcarrier closed this as completed Dec 7, 2016
@green3g
Copy link
Member

green3g commented Dec 7, 2016

We should probably keep this open until it gets fixed. Pull requests welcome 😄

@green3g green3g reopened this Dec 7, 2016
@tmcgee
Copy link
Member

tmcgee commented Dec 8, 2016

The only grunt tasks I run are grunt lint and grunt build so I can't contribute to this discussion or what should go into a PR. Any PR would need to go against the current develop branch which has other modifications to the grunt file

@kcarrier
Copy link
Author

kcarrier commented Dec 8, 2016 via email

@tmcgee
Copy link
Member

tmcgee commented Dec 8, 2016

Thanks @kcarrier I know what the command is supposed to do. 😄 When I run it, I don't get that error. I think that relates to the use of a proxy page which is optional most of the time for CMV. I have never used to proxy set up the grunt so can't speak to the intent or the usage. Perhaps @DavidSpriggs can chime in with some thoughts.

@kcarrier
Copy link
Author

kcarrier commented Dec 8, 2016 via email

@tmcgee tmcgee added this to the v2.0.0-beta.1 milestone Feb 11, 2017
@tmcgee tmcgee self-assigned this Feb 11, 2017
@tmcgee
Copy link
Member

tmcgee commented Feb 11, 2017

fixed in PR #669

@tmcgee tmcgee closed this as completed Feb 11, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants