Сбой запуска задачи Visual Studio NPM, но выполнение задачи за пределами VS выполняется нормально

#node.js #visual-studio-2015 #npm #babeljs

#node.js #visual-studio-2015 #npm #babeljs

Вопрос:

Я работаю над переносом приложения ReactJS на установку .NET. Я пытаюсь запустить скрипт NPM из запуска задачи (или где-либо в VS.). Когда я запускаю свою команду сборки из запуска задачи, она завершается сбоем из-за функции ES6 arrow в одном из моих сценариев. Однако, если я загружаю cmd.exe или powershell, перехожу к проекту и запускаю его вручную, он работает отлично.

Есть идеи, почему Visual Studio будет это делать?

Результат выглядит примерно так:

 > cmd.exe /c npm run build --color=always
> ...cmd1
> ...cmd2
> mocha --reporter spec tools/testSetup.js "Scripts/app/**/*.test.js"
C:CodeHALdevTestHALTestHALReacttoolstestSetup.js:40
Object.keys(document.defaultView).forEach((property) => {
                                                      ^
SyntaxError: Unexpected token >
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at C:CodeHALdevTestHALTestHALReactnode_modulesmochalibmocha.js:220:27
    at Array.forEach (native)
    at Mocha.loadFiles (C:CodeHALdevTestHALTestHALReactnode_modulesmochalibmocha.js:217:14)
    at Mocha.run (C:CodeHALdevTestHALTestHALReactnode_modulesmochalibmocha.js:469:10)
    at Object.<anonymous> (C:CodeHALdevTestHALTestHALReactnode_modulesmochabin_mocha:404:18)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:906:3
  

Файл, в котором он выдает ошибку, в основном просто устанавливает JSDOM:

 process.env.NODE_ENV = 'test';

// Register babel so that it will transpile ES6 to ES5
// before our tests run.
require('babel-register')();

// Disable webpack-specific features for tests since
// Mocha doesn't know what to do with them.
require.extensions['.css'] = function () {return null;};
require.extensions['.png'] = function () {return null;};
require.extensions['.jpg'] = function () {return null;};

// Configure JSDOM and set global variables
// to simulate a browser environment for tests.
var jsdom = require('jsdom').jsdom;

var exposedProperties = ['window', 'navigator', 'document'];

global.document = jsdom('');
global.window = document.defaultView;
Object.keys(document.defaultView).forEach((property) => {
  if (typeof global[property] === 'undefined') {
    exposedProperties.push(property);
    global[property] = document.defaultView[property];
  }
});

global.navigator = {
  userAgent: 'node.js'
};

documentRef = document;  //eslint-disable-line no-undef
  

Опять же, я могу запустить это из командной строки напрямую, и это сработает. Вызывается babel-register. Я просто не уверен, почему здесь возникает ошибка. Если я заменяю функцию стрелки обычной функцией, я получаю другие ошибки в своих тестах, так что это похоже на то, что программа запуска задач не может найти babel или теряет некоторые настройки среды.

Комментарии:

1. Вы когда-нибудь решали эту проблему? Я сталкиваюсь с той же проблемой и вынужден использовать gulp без необходимости: (

2. Я этого не сделал. Я в значительной степени полностью отказался от VS.

3. Ох… это прискорбно. Тем не менее, спасибо за ответ.