Машинопись - проблема с Grunt-TS, Grunt, watch / compile и dropbox

ОБНОВЛЕНИЕ: после того, как на другом компьютере начались проблемы с просмотром и компиляцией, я думаю, что это может иметь какое-то отношение к файлам tscommandxxxxxx.tmp.txt, которые генерируются при компиляции ... иногда они не удаляются после завершения и в других случаях они никогда не появляются

ОБНОВЛЕНИЕ 2: я думаю, что эта случайная ошибка может иметь значение: Error happened in chokidar: { [ Error: EONOENT, stat 'C:\Users\me\dropbox\xxx\xxx\myApp\src\.subl3cb.tmp'] errno: 34, code: 'ENOENT', path: 'C:\\Users\\me\\dropbox\\xxx\\xxx\\myApp\\src\\.subl3cb.tmp' }

Когда я ищу этот временный файл, его там нет, поэтому я не могу его прочитать. Я ничего не знаю о чокидаре, кроме того, что это зависимость от grunt-ts


Я работал с Typescript (0.9.5), используя Sublime (не VS) с node / npm, grunt и grunt-ts. Grunt / Grunt-ts был настроен так, чтобы отслеживать изменения в .ts файлах в каталоге, а затем компилировать их в .js. Все файлы проекта, включая локальные модули npm, хранятся в Dropbox, и каждый компьютер, на котором я разрабатываю, также grunt-cli установлен глобально. Все работало отлично в течение пары недель, а затем на прошлой неделе я увидел, что Typescript 1.0RC доступен, поэтому я попытался изменить зависимость grunt-ts с 0.9.5 на 1.0, чтобы посмотреть, будет ли она работать. Что ж, это не так, поэтому я удалил grunt-ts и снова установил его. Он по-прежнему отлично работает на 2 из 3 моих компьютеров, но по какой-то причине мой основной (тот, на котором я инициировал изменения) больше не будет успешно просматривать каталог и перекомпилировать. Я удалил node, удалил каталоги модулей npm, которые смог найти (один, где был установлен node, а затем 2 в appdata / roaming - одна из которых была папкой кеша), а затем повторно установил только те вещи, которые у меня есть на других ПК, но это не имело никакого значения. Самая раздражающая часть заключается в том, что ошибок нет, он просто остается там после начальной компиляции, которая происходит, когда я запускаю grunt из папки проекта ... никогда не обновляюсь при изменении файла ... Если я запускаю grunt на другом компьютере и создаю файл изменяется, как только Dropbox синхронизирует данные, которые компьютер просматривает и компилирует нормально.

Помимо попытки найти место, где кешируется какая-то старая информация о npm / узлах, у меня нет идей, что попробовать ...

Хотя это не имеет значения, поскольку он работает на других ПК через Dropbox, вот файл grunt:

module.exports = function (grunt) {
    "use strict";

    grunt.initConfig({
        ts: {
            options: {
                target: 'es5',
                module: 'amd',
                sourcemap: true,
                declaration: false,
                nolib: false,
                comments: false
            },
            dev: {
                src: ["src/**/*.ts"],
                watch: 'src',
                outDir: 'src'
            }
        },
    });

    //load the task
    grunt.loadNpmTasks("grunt-ts");
    grunt.registerTask("default", ["ts:dev"]);
};

Package.json:

{
  "devDependencies": {
    "grunt": "~0.4.1",
    "grunt-ts": "~1.7.2-2",
    "typescript": "0.9.5"
  }
}

person tehaaron    schedule 04.03.2014    source источник


Ответы (2)


Был доступен Typescript 1.0RC, поэтому я попытался изменить зависимость grunt-ts с 0.9.5 на 1.0, чтобы посмотреть, будет ли это работать.

Вам не нужно изменять внутренний package.json grunt-ts. Вы можете сделать это со своего package.json: https://github.com/grunt-ts/grunt-ts#alternate-compiler-version

e.g.:

{
  "devDependencies": {
    "grunt" : "~0.4.1",
    "grunt-ts" : "~1.7.2",
    "typescript" : "0.9.7",
  }
}

О:

старая информация о npm / узле кешируется

grunt-ts нет.

Можете ли вы поделиться своим package.json? Если можете, попробуйте последнюю версию grunt-ts (1.7.2-2).

{
  "devDependencies": {
    "grunt" : "~0.4.1",
    "grunt-ts" : "~1.7.2-2",
    "typescript" : "0.9.7",
  }
}
person basarat    schedule 04.03.2014
comment
спасибо за ответ. Я добавил package.json выше. Однако я не думаю, что это проблема, потому что два моих других компьютера используют буквально те же package.json и gruntfile, поскольку они хранятся в dropdox. PS - Мне нравятся ваши видеоролики на YouTube о машинописном тексте и angular! - person tehaaron; 04.03.2014
comment
похоже, что другой компьютер перестал смотреть / компилировать .. Я думаю, что я снова сохранил, пока он все еще компилировался, он выбросил ошибку, а затем перестал работать. Я думаю, что файл .tmp был проблемой. - person tehaaron; 05.03.2014
comment
Я думаю, что проблема в зависимости от чокидара. - person tehaaron; 05.03.2014
comment
Я не уверен, что все произошло при обновлении с 1.6.4 до 1.7.2-2, но я не могу чисто установить grunt-ts 1.7.2-2, и ошибка, похоже, связана с восстановлением node-gyp и chokidar. Дайте мне знать, если вы хотите, чтобы я регистрировал какие-либо проблемы на grunt-ts github - person tehaaron; 05.03.2014
comment
Если вы получаете сообщение об ошибке fsevents, игнорируйте его. Я только что создал проблему, которую нужно отслеживать: github.com/grunt-ts/grunt -ts / issues / 71 - person basarat; 05.03.2014

После удаления и переустановки всего, что связано с узлами на глобальном уровне, я решил сделать то же самое в рамках проекта ... Я сделал все по-разному, но всегда получаю один и тот же результат.

Итак, я понял, что у меня есть крошечный учебный проект где-то еще в Dropbox, и запустил grunt для этого проекта, и просмотр / компиляция сработали! Я вспомнил, что скопировал gruntfile и package.json прямо из этого проекта, когда начинал, поэтому они были идентичны npm пакетам и структуре каталогов.

Наконец, я удалил папку node_modules моего большего приложения и скопировал папку node_modules из рабочего руководства на ее место .... и это волшебным образом работает ... ну, не волшебным образом, оказалось, что старый проект использовал grunt-ts 1.6.4 и в некоторых Во время попытки обновления версии TS я обновил grunt-ts, который по какой-то причине у меня не работает на 1.7.2-2.

person tehaaron    schedule 05.03.2014
comment
Можете ли вы попробовать запустить его с помощью теста часов, который входит в репозиторий grunt-ts? Раскомментируйте эту строку: github.com/grunt-ts/ grunt-ts / blob / master / Gruntfile.js # L180 и запустите grunt ts:fail и попробуйте отредактировать файл. За вами смотрят? - person basarat; 05.03.2014
comment
PS: Я был бы рад взглянуть на ваш проект, если вы разместите его на github или в частном репо внутри битбакета. - person basarat; 05.03.2014