【问题标题】:Typescript - Issue with Grunt-TS, Grunt, watch/compile, and dropboxTypescript - Grunt-TS、Grunt、watch/compile 和 dropbox 的问题
【发布时间】:2014-04-05 13:21:32
【问题描述】:

更新:在另一台计算机开始出现观看和编译问题后,我认为它可能与编译时生成的 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 的依赖之外,我对 chokidar 一无所知


我一直在使用带有 node/npm、gruntgrunt-ts 的 Sublime(不是 VS)来使用 Typescript (0.9.5)。 Grunt/Grunt-ts 被设置为监视一个目录以查看对.ts 文件的更改,然后将它们编译为.js。包括本地 npm 模块在内的所有项目文件都存储在 Dropbox 上,我开发的每台计算机也全局安装了 grunt-cli。几周以来一切都很好,然后上周我看到 Typescript 1.0RC 可用,所以我尝试将 grunt-ts 依赖项从 0.9.5 更改为 1.0 以查看它是否可以工作。好吧,它没有,所以我卸载了grunt-ts 并重新安装了它。它在我的 3 台 PC 中的 2 台上仍然可以正常工作,但由于某种原因,我的主要一台(我启动更改的那台)将无法成功查看目录并重新编译。我已经卸载了节点,删除了我能找到的 npm 模块目录(一个安装了节点,然后在 appdata/roaming 下安装了 2 个 - 其中一个是缓存文件夹),然后只重新安装了我在其他 PC 上拥有的东西,但这并没有什么不同。最烦人的部分是没有错误,它只是在我从项目文件夹运行grunt 时发生的初始编译之后就坐在那里......从不更新文件更改......如果我在另一个上运行grunt pc 并进行文件更改,一旦 Dropbox 同步 PC 观看并编译正常。

除了试图找到一些旧的 npm/node 信息被缓存的地方之外,我不知道该尝试什么......

尽管它可以通过 Dropbox 在其他 PC 上运行,但这并不重要,这里是 gruntfile:

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"]);
};

包.json:

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

【问题讨论】:

    标签: node.js gruntjs typescript npm


    【解决方案1】:

    Typescript 1.0RC 可用,因此我尝试将 grunt-ts 依赖项从 0.9.5 更改为 1.0 以查看它是否可以工作

    你不需要修改grunt-ts的内部package.json。您可以通过package.json 进行操作: https://github.com/grunt-ts/grunt-ts#alternate-compiler-version

    例如:

    {
      "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",
      }
    }
    

    【讨论】:

    • 感谢回复我在上面添加了package.json。但是,我认为这不是问题,因为我的另外两台 PC 使用的是完全相同的 package.json 和 gruntfile,因为它们存储在 dropdox 上。 PS - 我喜欢你在 youtube 上关于 typescript 和 angular 的视频!
    • 看起来另一台计算机已停止观看/编译。我想我在它仍在编译时再次保存,它抛出错误然后停止工作。我认为 .tmp 文件是个问题。
    • 我认为 chokidar 依赖是问题所在。
    • 我不确定从 1.6.4 升级到 1.7.2-2 的过程中发生了什么,但我无法干净地安装 grunt-ts 1.7.2-2 并且错误似乎与重建节点有关-gyp和chokidar。如果你想让我在 grunt-ts github 上记录任何问题,请告诉我
    • 如果您收到 fsevents 错误,您可以放心地忽略它们。我刚刚创建了一个要跟踪的问题:github.com/grunt-ts/grunt-ts/issues/71
    【解决方案2】:

    在全局级别卸载并重新安装所有与节点相关的所有内容后,我决定在项目中做同样的事情......我做了很多不同的事情,但总是得到相同的结果。

    所以我意识到我在 Dropbox 的其他地方有一个小型教程项目,并为该项目运行 grunt 并且观看/编译工作正常!我记得我在开始时直接从该项目中复制了gruntfilepackage.json,因此它们与npm 包和目录结构相同。

    最后,我删除了我较大的应用程序的 node_modules 文件夹,并从工作教程中复制了 node_modules 文件夹到它的位置....它神奇地工作......好吧不是神奇地,事实证明旧的项目正在使用grunt-ts 1.6.4,在我尝试升级 TS 版本的某个时候,我更新了 grunt-ts,无论出于何种原因,它在 1.7.2-2 对我来说都不起作用。

    【讨论】:

    • 您可以尝试使用grunt-ts repo 中的手表测试来运行它吗?取消注释此行:github.com/grunt-ts/grunt-ts/blob/master/Gruntfile.js#L180 并运行 grunt ts:fail 并尝试编辑文件。它会被你监视吗?
    • PS:如果您可以将其发布在 github 或 bitbucket 中的私人仓库上,我很乐意查看您的项目
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 2016-02-07
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多