Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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
Typescript 文件更改时grunt ts监视不工作_Typescript_Grunt Ts - Fatal编程技术网

Typescript 文件更改时grunt ts监视不工作

Typescript 文件更改时grunt ts监视不工作,typescript,grunt-ts,Typescript,Grunt Ts,我正在使用grunt: "dev-build": { src: ["src/**/*.ts", "typings/vendors.d.ts","typings/tsd.d.ts", "!libs/**/*.ts"], outDir: "artifacts/dev", watch: "src/**/*", options: {

我正在使用grunt:

  "dev-build": {
                src: ["src/**/*.ts", "typings/vendors.d.ts","typings/tsd.d.ts", "!libs/**/*.ts"],
                    outDir: "artifacts/dev",
                    watch: "src/**/*",
                    options: {
                        // comments: true,
                  //      baseDir: 'src/',
                        module: "amd",
                        target: "es5",
                        sourceMap: true,
                        declaration: true, //inlineSourceMap :true,
                        //emitDecoratorMetadata:true,
                        //experimentalDecorators:true,

                    }               

            }
一切都很好:

“TypeScript编译完成:256个TypeScript文件的8.97s。”

但是,在更改文件(添加换行符)而不更改代码后,编译将使用手表中断:

### changed  >>src/FxsPortal/FxsBaseItemViewModel.ts
Compiling...
### Fast Compile >>src/FxsPortal/FxsBaseItemViewModel.ts
Using tsc v1.6.2
C:/dev/AscendXYZ Portal/src/FxsPortal/FxsBaseItemViewModel.ts(2,21): error TS2307: Cannot find module 'knockout'.
我知道没有错误,因为我可以手动编译。我似乎不明白为什么它不工作时,手表的ts咕噜触发

我似乎不明白为什么它不工作时,手表的ts咕噜触发

可以安全地忽略这些错误。它们出现的原因是grunt只是从命令行驱动
tsc
,并且只传递单个文件

更多
如果您真的在意,您可以使用
reference
标记引入全局
.d.ts
文件(不通过
导入/需要
导入的文件)。但我强烈反对。你应该打开一个IDE,让你知道真正的错误(…cough atom ts…作为参考,我只是想分享一下我是如何使用外部手表解决这个问题的

 watch: {
            devBuildWatch: {
                files: ['src/**/*'],
                tasks: ['ts:devBuild'],
                options: {
                    spawn: false,
                },
            }
        },
和一次改变行动

 var changedFiles = {};

    var onChange = grunt.util._.debounce(function () {
        grunt.config('ts.devBuild.src', Object.keys(changedFiles).concat([ "typings/vendors.d.ts","typings/tsd.d.ts", "!libs/**/*.ts"]));
        changedFiles = Object.create(null);
    }, 50);

    grunt.event.on('watch', function (action, filepath) {
        changedFiles[filepath] = action;
        onChange();
    });

谢谢我将研究atom-ts。目前我正在并排使用VS typescript项目来突出显示。我理解文档,所以引用是一个输出文件?这是错误的,所以我可以把我的tsd.d.ts作为参考?(也可以使用数组吗)?对不起,您需要ts文件中的引用。不是Grunts中的选项看看我对外部手表的回答。如果我们在ts grunt上有一个选项,那么内部监视也会做类似的操作,比如将类型定义列表浓缩起来。嗨@basarat,我也遇到了这个问题。有新的解决方案吗?忽略控制台不是一个很好的方法,有点错过了watch IMO的目的。@basarat-这里真正的问题是,诚然,我可以忽略错误,文件将被编译,但由于这是一个错误,当我撤消我得到的最新代码更改时:
未检测到任何文件更改。跳过编译
-因此我将继续使用产生错误的编译代码。谢谢-如何将“onchange”代码链接到监视任务?如果您有一个正在运行的监视,那么grunt.event.on(“监视”)将在更改时触发