WebStorm tsconfig.json似乎没有更新正确的文件

时间:2017-07-13 19:07:19

标签: node.js typescript webstorm

我正在使用TypeScript开发一个node.js应用程序。

我在项目的根文件夹中创建了一个TypeScript文件。我运行tsconfig,它似乎更新了dist文件夹。但是,当我运行应用程序时,我收到错误,指示未定义函数。

这里的事情让人感到困惑:我的.js文件夹中的.mapsrc文件的旧版本似乎与我的源文件具有相同名称的目录相同。这个.js文件似乎有一个旧版本的文件缺少必要的函数(类方法),与我/dist文件夹中的当前版本不同。

在一天结束时,我正在尝试对/dist文件夹中的文件运行调试器,并在/src TypeScript文件中设置断点。

这是我在/src文件夹中看到的文件结构的示例(此js文件不是最新的):

enter image description here

以下是我的/dist文件夹的文件结构示例,其中包含已转换的js代码:

enter image description here

此外,以下是项目的Web应用程序(其余)部分的调试器设置:

enter image description here

最后,这是tsconfig.json文件的示例:

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "ES5",
    "moduleResolution": "node",
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "types": ["reflect-metadata"],
    "lib": ["ES6"],
    "sourceMap": true,
    "inlineSources": true,
    "pretty": true,
    "outDir": "./dist",
    "rootDir": "./src/",
    "noLib": false
  },
  "compileOnSave": true,
  "include": [
    "src/**/*"
  ],
  "exclude": [
    "node_modules",
    "node_modules/@types"
  ]
}
  1. 我想了解有什么问题,导致它读取错误的js文件,而不是/dist文件夹中的文件?

  2. 如何解决此问题以指向/dist文件夹。我认为我设置的调试器设置会这样做,但似乎并非如此。

  3. 更新:我删除了在src文件夹中生成的.js文件,并最终返回到该文件夹​​,再次,在进行其他更改后,它们不是最新的。我不确定是什么生成这些文件;它是webstorm中的一个设置还是tsconig.json?

    其他东西看起来并不正确。当我打开dist文件夹中的一个文件时,我发现了以下代码而不是JS代码:

    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    //# sourceMappingURL=group.js.map
    

    这不是我所期待的,因为我期待看到已编译的js代码。

1 个答案:

答案 0 :(得分:1)

您在包含src中声明rootDir,应该宣布所有内容都相对于rootDir,但在这种情况下,您可能不需要包含或src排除因为您无论如何都要包含compileOnSave中的所有内容。 watcher选项是在删除文件时生成文件的原因,因为target已设置为执行此操作。您还混合了lib@types个javascript版本。

如果您已经使用types属性,则无需明确排除{ "compilerOptions": { "module": "commonjs", "target": "ES5", "moduleResolution": "node", "experimentalDecorators": true, "emitDecoratorMetadata": true, "types": ["reflect-metadata"], "lib": ["ES5"], "sourceMap": true, "inlineSources": true, "pretty": true, "outDir": "dist", "rootDir": "src", "noLib": false }, "compileOnSave": false }

  

如果指定了类型,则仅包含列出的包。

这是一个可以尝试的清理配置

for file in $(find /home/tmp/ -type f)
do
if [ -f "$file" ]
then
        DIRPATH=$(dirname "${file}")
        FILENAME=$(basename "${file}")
#       echo "Dirpath = ${DIRPATH} Filename = ${FILENAME}"
        mv "${DIRPATH}/"${FILENAME} /home/from
        echo ${FILENAME} " moved to from directory" 
else
    echo "Directory is empty"
fi

done