我正在使用TypeScript开发一个node.js应用程序。
我在项目的根文件夹中创建了一个TypeScript文件。我运行tsconfig
,它似乎更新了dist
文件夹。但是,当我运行应用程序时,我收到错误,指示未定义函数。
这里的事情让人感到困惑:我的.js
文件夹中的.map
和src
文件的旧版本似乎与我的源文件具有相同名称的目录相同。这个.js
文件似乎有一个旧版本的文件缺少必要的函数(类方法),与我/dist
文件夹中的当前版本不同。
在一天结束时,我正在尝试对/dist
文件夹中的文件运行调试器,并在/src
TypeScript文件中设置断点。
这是我在/src
文件夹中看到的文件结构的示例(此js文件不是最新的):
以下是我的/dist
文件夹的文件结构示例,其中包含已转换的js代码:
此外,以下是项目的Web应用程序(其余)部分的调试器设置:
最后,这是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"
]
}
我想了解有什么问题,导致它读取错误的js文件,而不是/dist
文件夹中的文件?
如何解决此问题以指向/dist
文件夹。我认为我设置的调试器设置会这样做,但似乎并非如此。
更新:我删除了在src文件夹中生成的.js文件,并最终返回到该文件夹,再次,在进行其他更改后,它们不是最新的。我不确定是什么生成这些文件;它是webstorm中的一个设置还是tsconig.json?
其他东西看起来并不正确。当我打开dist文件夹中的一个文件时,我发现了以下代码而不是JS代码:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=group.js.map
这不是我所期待的,因为我期待看到已编译的js代码。
答案 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