【问题标题】:How to provide the module flag in a VS2015 project?如何在 VS2015 项目中提供模块标志?
【发布时间】:2015-08-11 08:49:18
【问题描述】:

我使用 VS2015 在 web 项目中创建了一个新的 .ts 文件。在 TypeScript Build 下的项目属性中,我检查了 Module System = AMD。

然后在尝试编写外部模块时出现以下错误。

除非提供 '--module' 标志,否则无法编译模块。

在哪里提供模块标志?

【问题讨论】:

  • 我也有同样的问题。我已经为构建(工具->选项)设置了详细的详细程度,我可以看到模块参数没有传递给打字稿编译器:tsc.exe --sourcemap --target ES5 --noEmitOnError --locale en-US。很奇怪。
  • 我对 VS Code 也有同样的问题。 VS Code 的文档仍然很差。即使是最基本的示例也无法编译。

标签: typescript visual-studio-2015


【解决方案1】:

这似乎是一个bug 与 VS2015 RTM。项目 TypeScript 设置未正确保存到 .csproj 文件中,因此 TypeScript 编译器没有读取它们。

修复:

  1. 右键单击项目,将其卸载,然后再次右键单击并进行编辑。
  2. 搜索<TypeScriptModuleKind>,然后找到父元素,应该叫<PropertyGroup>
  3. Condition 属性值中查找文本“Any CPU”,将其更改为“AnyCPU”——即删除空格。
  4. 再次搜索并重复更改,以防您有其他构建条件的 TypeScript 设置。

请注意,在修复此错误之前,您需要编辑 .csproj 文件以修改 TypeScript 设置。如果您尝试从项目设置区域进行更改,它只会在项目文件中再次生成具有错误条件值的新设置。

另外,您可能正在阅读有关使用 tsconfig.json 文件而不是在 VS2015 中提供设置的信息。但是,目前似乎此功能仅针对网站项目类型实现,而不针对 Web 应用程序项目。

【讨论】:

  • 这也对我有用。两件事 1)它是 <PropertyGroup> 而不是 ` 2)我将条件更改为 <PropertyGroup Condition="'$(Platform)' == 'AnyCPU'"> 这样它适用于所有配置
  • 谢谢。我不得不使用@JonSquared 提供的解决方案来消除错误。
  • 我发现我还必须为每个不同的配置设置模块设置,而不仅仅是我目前使用的任何一个。
【解决方案2】:

我无法让它工作。无论我在打字稿部分更改什么 - 它在构建时都会被忽略。

如果我在 Tools->Options->Build 中将详细设置为 Detailed 并运行,我可以看到我的所有设置都被忽略了,包括 -module 标志。

就像解决方法一样。 在根目录中创建一个tsconfig.json 文件。并添加预构建事件“tsc”命令。在这种情况下,它工作得很好。

{
  "compilerOptions": {
    "module": "commonjs",
    "noImplicitAny": true,
    "removeComments": true,
    "preserveConstEnums": true,
    "sourceMap": true
  }
}

【讨论】:

    【解决方案3】:

    您已更新正确的设置 - 项目属性确实具有每个构建配置的设置,因此请确保您还在每个配置下勾选了“AMD”(例如,调试和发布)。

    在切换配置时,我经常被这个问题所困扰。

    【讨论】:

    • 这是我的第一步,所以我什至可以在项目文件中获取 元素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    相关资源
    最近更新 更多