【发布时间】:2023-03-24 21:55:01
【问题描述】:
我刚刚下载了新的 Visual Studio Code,我的第一印象非常好。对于打字稿,智能感知效果很好。
但是,有一个奇怪的问题:VS Code 似乎无法编译 typescript 模块。
这段代码:
/// <reference path="../definitions/react.d.ts"/>
import React = require("react");
在 cmd 上编译得非常好,使用
tsc --module commonjs main.ts
但在 VS Code 中,第二行以红色突出显示,编辑器抱怨:
除非提供“-module”标志,否则无法编译外部模块
当然,任何使用模块的打字稿代码都必须使用此标志进行编译。但是如果 IDE 知道模块的使用,为什么不设置标志呢?没有模块的打字稿代码在保存时编译,没有问题。
我想我缺少一些编译器设置配置文件。有这样的事吗?我在哪里可以找到它?
更新
我已经添加了 tsconfig.json 文件:
{
"compilerOptions": {
"target": "ES5",
"module": "commonjs",
"sourceMap": true
}
}
这实际上消除了错误。不幸的是,IDE 不再编译我的代码。起初我认为 config.json 只会使错误消息静音,但它的作用不止于此。 Intellisense 现在可以在示例文件中使用。如果我输入 React 会触发自动完成,并且显然知道 React,因为会显示有意义的建议。
现在,为什么 VS Code 不将文件编译为 js ?我尝试配置任务运行器来完成这项工作,但它似乎不起作用:
{
"version": "0.1.0",
// The command is tsc.
"command": "tsc",
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
// Under windows use tsc.exe. This ensures we don't need a shell.
"windows": {
"command": "tsc.exe"
},
// args is the HelloWorld program to compile.
"args": ["--module commonjs","${file}"],
// use the standard tsc problem matcher to find compile problems
// in the output.
"problemMatcher": "$tsc"
}
如果我保存文件,什么都不会发生,即使我明确地运行构建任务,也没有响应。我编辑的任务的名称是“tsc”,我也尝试运行它。没有效果。然后我把参数改成"args": ["--module commonjs","main.ts"],没有回应。
更新
任务运行器似乎工作的唯一方法是使用以下两个设置:
"args": ["${file}"], "isShellCommand": true,
这里是输出:
-
"args": ["-p"], "args": ["-p", "."],
错误 TS5023:未知的编译器选项“p”。
"args": ["."],
错误 TS6053:找不到文件“.ts”。
【问题讨论】:
-
我也遇到过这种情况,但是一直忽略。我刚刚发现这个可能有帮助的设置... "javascript.validate.module": "commonjs"
-
您可以在您的项目中创建一个tsconfig.json 吗?我不使用 Code,所以我不确定是否有 UI 设置
-
请使用 ES6 模块语法
import * as React from 'react'并在tsconfig.json文件中指定您的模块类型 -
@einstein 我相信语法仅在 1.5+ 版本中可用(目前处于测试阶段)
-
带上命令面板
cmd+shift+p并配置您的任务运行器。它应该在args属性下。
标签: typescript compilation visual-studio-code