Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs TypeScript命令行编译成功完成,但显示错误_Reactjs_Typescript_React Jsx_Typescript1.6 - Fatal编程技术网

Reactjs TypeScript命令行编译成功完成,但显示错误

Reactjs TypeScript命令行编译成功完成,但显示错误,reactjs,typescript,react-jsx,typescript1.6,Reactjs,Typescript,React Jsx,Typescript1.6,我正在浏览以下JSX TypeScript教程: 使用tsc.cmd-w命令,以下代码在浏览器中编译并成功执行,但在控制台中仍会出现错误: // app.tsx var content = <div>Hello, world!</div>; $(() => { let target = document.getElementById('output'); React.render(content, target); }); //app.tsx v

我正在浏览以下JSX TypeScript教程:

使用
tsc.cmd-w
命令,以下代码在浏览器中编译并成功执行,但在控制台中仍会出现错误:

// app.tsx
var content = <div>Hello, world!</div>;

$(() => {
    let target = document.getElementById('output');
    React.render(content, target);
});
//app.tsx
var content=Hello,world!;
$(() => {
让target=document.getElementById('output');
反应。呈现(内容、目标);
});
`

app.tsx(30,16):错误TS2304:找不到名称“React”。

app.tsx(34,5):错误TS2304:找不到名称“React”。
消息TS6042:编译完成。监视文件更改。
`

为什么即使编译成功,我仍然会出错?如何消除错误

我使用的是TypeScript 1.6

为什么即使编译成功,我仍然会出错

从typescript获得js并不意味着编译成功。以下是有关此主题的更多信息:

如何消除错误


您需要
react.d.ts
文件(
tsd install react
)()

basarat回答了我的第一个问题,但我仍然有编译错误的问题

在再次查看错误之后,我意识到TypeScript编译器无法找到React,但它在查找JQuery时似乎没有问题。所以我打开了React.d.ts文件,果然,这就是问题所在。React名称空间的名称为
\uu React
,而不是
React
。像这样对名称空间进行别名

import React = __React;
允许我消除类型脚本错误,但不幸的是,应用程序当时希望找到一个名为_React的全局变量。但是从Bower下载的React库有一个变量,如您所料,名为React

我在index.html文件中包含react脚本之后添加了以下脚本

<script>var __React = React;</script>
var\uuuu React=React;
这允许应用程序运行

我不知道为什么类型定义文件有这个名称空间,或者我是否以正确的方式解决了这个问题,但是现在这解决了我的问题

更新


我找到了一个更好的方法。。。安装react global
tsd安装react global
会公开react名称空间,因此不需要进行上述攻击

谢谢。我不知道即使存在编译错误,TypeScript也会发出JavaScript。您对我的第二个问题的回答没有帮助,因为我已经按照链接文章中的步骤安装了必要的打字。因为您没有使用外部模块。使用
tsd安装react global
获取react()的全局版本。也就是说,我强烈建议您将文件模块与weback之类的东西一起使用。
<script>var __React = React;</script>