Typescript重复标识符错误

时间:2017-03-11 00:35:31

标签: meteor typescript angular-meteor

当我尝试运行angular-meteor客户端(离子服务器)时,我收到以下错误:

[00:29:20]  typescript: node_modules/meteor-typings/1.3/main.d.ts, line: 657 
            Duplicate identifier 'Status'. 

     L657:    type Status = 'connected' | 'connecting' | 'failed' | 'waiting' | 'offline';

[00:29:20]  typescript: node_modules/meteor-typings/1.3/main.d.ts, line: 695 
            Duplicate identifier 'Status'. 

     L695:      type Status = 'connected' | 'connecting' | 'failed' | 'waiting' | 'offline';

[00:29:20]  transpile failed 

源代码文件中的错误是:TS2300:Duplicate identifier 'Status'

该项目是使用本教程构建的:https://angular-meteor.com/tutorials/whatsapp2/ionic/setup 大多数文件与此处相同:https://github.com/Urigo/Ionic2CLI-Meteor-WhatsApp

Ionic Framework: 2.1.0
Ionic Native: 2.4.1
Ionic App Scripts: 1.1.3
Angular Core: 2.2.1
Angular Compiler CLI: 2.2.1
Node: 6.3.1
OS Platform: macOS Sierra
Navigator Platform: MacIntel
User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36

您可以看到所有涉及的files in this codebase

任何想法是怎么回事?下一步去哪儿看?我承认我有点失落。 我恢复了自上次工作以来的所有代码更改并删除了node_modules并重新安装了项目要求。我仍然得到同样的错误,尽管我认为没有任何改变。

我很感激任何指导/想法。

3 个答案:

答案 0 :(得分:1)

我在tsconfig文件中有这个:

"types": [
  "meteor-typings",
  "@types/underscore"
]

一旦我删除了“meteor-typings'”,它就有效了!

"types": [
  "@types/underscore"
]

在我的package.json文件中,我有:

  "devDependencies": {
    "@ionic/app-scripts": "1.1.3",
    "@types/meteor": "^1.3.32",
    "@types/underscore": "^1.7.36",
    "meteor-typings": "^1.3.1",
    "tmp": "0.0.31",
    "typescript": "2.0.9",
    "typescript-extends": "^1.0.1"
  },

不知怎的,我猜它已经是transile过程的一部分,tsconfig中的附加行使它看起来更加双重。 (这是我的个人猜测,我不知道为什么):))

答案 1 :(得分:1)

FWIW当我将Ionic从2.0.0更新到2.2.0时,我开始遇到这个问题。

该修复程序对我有用,我有完整的tsconfig.json文件,如教程:

"types": [
  "meteor-typings",
  "@types/underscore",
  "@types/meteor-accounts-phone",
  "@types/meteor-collection-hooks"
]

删除“meteor-typings”解决了这个问题。我不知道为什么。

所以我希望教程可能需要更新,就像有人更新到最新的Ionic一样。我将在他们的github回购中发布一个问题。

答案 2 :(得分:0)

进一步澄清:在api / tsconfig.json中你留下了" meteor-typings"在类型[]中。在根文件夹中删除额外的" meteor-typings"在内部类型[]然后它应该运行没有错误。别忘了将软链接添加到api文件夹中的node_modules。

对于Windows用户,这可以通过以下方式完成:

key_callback(GLFWwindow *window, int key, int scancode, int action, int mods) {
        // do stuff
        // realloc pointer
}

int main(void) {

    int *pointer = malloc(sizeof(int));
    if (!pointer){
        free(pointer);
        exit(EXIT_FAILURE);
    }

    GLFWwindow *window;
    glfwSetErrorCallback(error_callback);
    if (!glfwInit())
        exit(EXIT_FAILURE);
    window = glfwCreateWindow(1280, 720, "Example", NULL, NULL);
    if (!window) {
        glfwTerminate();
        exit(EXIT_FAILURE);
    }
    glfwMakeContextCurrent(window);
    glfwSetKeyCallback(window, key_callback);

    while (!glfwWindowShouldClose(window)) {

        //draw stuff

        glfwSwapBuffers(window);
        glfwPollEvents();

    }

    free(pointer);
    glfwDestroyWindow(window);
    glfwTerminate();
    exit(EXIT_SUCCESS);
}

如教程中所述,api文件夹中应该没有package.json。

感谢您的解决。