TypeScript错误TS5014:位于0的JSON中出现意外的标记u

时间:2017-08-21 05:59:49

标签: javascript json typescript typescript-compiler-api

我正在尝试将.ts编译为.js

我有tsconfig.json如下

{
"compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "sourceMap": true,
    "outFile": "build/test.js"
},
"exclude": [
    "node_modules"
]
}

下面是我的package.json

{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"tsc": "^1.20150623.0",
"typescript": "^2.4.2"
}
}

,自动生成的tasks.json如下所示

{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
    {
        "type": "typescript",
        "tsconfig": "tsconfig.json",
        "problemMatcher": [
            "$tsc"
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        }
    }
]
}

当我尝试运行构建任务时,我收到以下错误

Executing task: <myprojloc>\node_modules\.bin\tsc.cmd  -p "<myprojloc>\tsconfig.json" <

error TS5014: Failed to parse file '<myprojloc>/tsconfig.json/tsconfig.json': Unexpected token u in JSON at position 0.

Terminal will be reused by tasks, press any key to close it.

我做错了什么?请注意,我已在package.json

中添加了版本

6 个答案:

答案 0 :(得分:15)

我想在您忘记添加'typescript'作为依赖项时也会看到此错误。

npm install typescript

应该解决这个问题。

请注意,问题中的package.json中存在此依赖关系

答案 1 :(得分:4)

在使用 Git Bash 作为VS Code的默认Shell时遇到了这个问题。将默认外壳程序切换为命令提示符,运行npm install typescript以使其后代,然后重新构建。

我正在使用“默认” tsc构建任务:

{
    "version": "2.0.0",
    "tasks": [
      {
        "type": "typescript",
        "tsconfig": "tsconfig.json",
        "problemMatcher": ["$tsc"],
        "group": {
          "kind": "build",
          "isDefault": true
        }
      }
    ]
 }

答案 2 :(得分:3)

保存文件会导致无法正确解析,可能会出现一些问题。我通常选择不通过将文件重命名为tsconfig.json.backup或其他内容来处理它,然后调用tsc --init来生成已知的好文件。然后,您可以将特定配置传输到新生成的tsconfig.json文件中,取消注释您关注的部分。

如果在此之后它仍然存在,则可能是您正在使用的TypeScript版本中的实际错误。

答案 3 :(得分:2)

如果仔细查看错误消息,可以看到失败的原因。为运行tsc而形成的命令行正在查看错误的目录。它正在查看<myprojloc>/tsconfig.json/而不是<myprojloc>/。看看tsconfig.json在错误中重复了两次?

error TS5014: Failed to parse file '<myprojloc>/tsconfig.json/tsconfig.json': Unexpected token u in JSON at position 0.

运行npm install typescript --save-dev对我有用,但我可以看到如何编辑任务并指定command来查找tsconfig.json的正确目录也可以解决问题。

答案 4 :(得分:0)

从同事那里得到建议并从这个link尝试一些东西后,我重新编写了tasks.json,如下所示,它现在有效了。似乎该命令以前有一些问题

{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
    {
        "taskName": "compile",
        "type": "shell",
        "command": "tsc -p tsconfig.json",
        "group": {
            "kind": "build",
            "isDefault": true
        },
        "problemMatcher": []
    }
]
}

答案 5 :(得分:-1)

无需卸载tsc,只需在项目根目录级别使用npm install typescript