错误 TS1316 全局模块导出可能只出现在顶层
error TS1316 Global module exports may only appear at top level
构建旧的打字稿项目时遇到问题。无法构建我要返回的旧项目。尝试构建时 q 存在问题。我假设这是我的 tsc 版本,但我尝试过的每个版本都会导致错误。
网上有一些建议将打字稿版本更改为 2.2 以上,因为它处理打字的方式不同,但没有任何进展。
我提供了错误信息和版本。还有我的tsconfig.json。如果您需要更多信息,请告诉我。
错误 ($tsc -v 2.1.5)
$ tsc -p ./
typings/modules/q/index.d.ts(10,1): error TS1316: Global module exports may only appear at top level.
版本
nvm: 1.1.5
npm: 4.1.2
tsc: 2.1.5
node: 7.5.0
$ npm list --depth=0
+-- @types/q@1.5.1
`-- typescript@2.1.5
tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "amd",
"outDir": "static/js",
"sourceMap": true,
"strictNullChecks": true,
"noImplicitAny": true
},
"files": [
"typings/index.d.ts",
"../common/types.d.ts"
],
"include": [
"src/**/*.ts"
]
}
编辑
tsc v2.3.0下列出的错误其实还是2.1.5。我没有全局安装 typepscript,所以当我 运行 tsc 命令时它仍然使用 2.1.5 而不是 2.3.0。
当声明文件中出现错误时,通常表示声明文件使用的语法在您的 TypeScript 版本中不可用。
在这种情况下,让我们看一下报告为错误的行。
64: then<U = T, V = never>(onFulfill?: ...
200: thenReject<U = T>(reason?: any): Promise<U>;
此处报告的错误指向类型参数部分中的等号。这表示不支持默认类型参数。这实际上没有意义,因为在 TS2.3 中添加了对 default type arguments 的支持。我最好的猜测是您实际上没有为这些错误安装 2.3,并且版本已切换...
考虑到这一点,其他错误可能是由于旧的(<2.1,如果我没记错的话)typings
文件和新的 @types
文件之间的不兼容。使用 node_modules/@types/q
中安装的类型,您不需要包含自定义 typings
文件夹,因此您应该能够删除 typings/modules/q
(事实上,整个 typings
文件夹)来解决另一个错误。
如果这不能解决您的问题,克隆一个项目会让您更容易找出问题所在。
构建旧的打字稿项目时遇到问题。无法构建我要返回的旧项目。尝试构建时 q 存在问题。我假设这是我的 tsc 版本,但我尝试过的每个版本都会导致错误。
网上有一些建议将打字稿版本更改为 2.2 以上,因为它处理打字的方式不同,但没有任何进展。
我提供了错误信息和版本。还有我的tsconfig.json。如果您需要更多信息,请告诉我。
错误 ($tsc -v 2.1.5)
$ tsc -p ./
typings/modules/q/index.d.ts(10,1): error TS1316: Global module exports may only appear at top level.
版本
nvm: 1.1.5
npm: 4.1.2
tsc: 2.1.5
node: 7.5.0
$ npm list --depth=0
+-- @types/q@1.5.1
`-- typescript@2.1.5
tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "amd",
"outDir": "static/js",
"sourceMap": true,
"strictNullChecks": true,
"noImplicitAny": true
},
"files": [
"typings/index.d.ts",
"../common/types.d.ts"
],
"include": [
"src/**/*.ts"
]
}
编辑
tsc v2.3.0下列出的错误其实还是2.1.5。我没有全局安装 typepscript,所以当我 运行 tsc 命令时它仍然使用 2.1.5 而不是 2.3.0。
当声明文件中出现错误时,通常表示声明文件使用的语法在您的 TypeScript 版本中不可用。
在这种情况下,让我们看一下报告为错误的行。
64: then<U = T, V = never>(onFulfill?: ...
200: thenReject<U = T>(reason?: any): Promise<U>;
此处报告的错误指向类型参数部分中的等号。这表示不支持默认类型参数。这实际上没有意义,因为在 TS2.3 中添加了对 default type arguments 的支持。我最好的猜测是您实际上没有为这些错误安装 2.3,并且版本已切换...
考虑到这一点,其他错误可能是由于旧的(<2.1,如果我没记错的话)typings
文件和新的 @types
文件之间的不兼容。使用 node_modules/@types/q
中安装的类型,您不需要包含自定义 typings
文件夹,因此您应该能够删除 typings/modules/q
(事实上,整个 typings
文件夹)来解决另一个错误。
如果这不能解决您的问题,克隆一个项目会让您更容易找出问题所在。