javascript - 编译器不抛出 "Cannot find module"错误

标签 javascript reactjs typescript react-native

在我的项目中我有 2 个文件:

foo.js

const image = require('../this/path/is/wrong.png');

boo.tsx

const image = require('../this/path/is/wrong.png');

foo.js中TypeScript正确的发现图片不存在并抛出“Cannot find module”错误,但是对于boo.tsx没有抛出错误所以该错误仅在应用程序崩溃时出现在运行时。

如果我只是将 boo.tsx 重命名为 boo.js TS 再次开始按预期抛出错误。

这些是我认为可能相关的一些编译器选项:

"module":"es2015",
"target": "es2015",
"jsx": "react",
"moduleResolution":"Node",
"allowJs": true,

我试过:

  • 不同的模块和模块分辨率设置
  • 使用 import 而不是 require
  • 有和没有@types/node

我是否缺少任何特殊的 tsconfig 设置或者我做错了什么?

最佳答案

require 函数在 .ts.tsx 文件中没有特殊含义,因为 TypeScript 仅使用可识别的导入语法。

在带有 allowJs.js 文件中,它使用启发式方法,并将 require 调用识别为导入。

对于 TypeScript 来说,更等价的东西是这样的

import image = require('../this/path/is/wrong.png');

或 ES 模块语法之一,例如

import * as foo from "foo";

import foo from "foo";

关于javascript - 编译器不抛出 "Cannot find module"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50892425/

相关文章:

reactjs - React-navigation:使用底部选项卡导航器时不显示标题

javascript - 将 React PureComponent 重构为基于钩子(Hook)的功能组件

typescript - 为什么不能将接口(interface)分配给 Record<string, unknown>?

javascript - 单行的 Angular6 多个 ngFor - 如何在一个 ngFor 中传递两个值

javascript - MP4 视频无法在浏览器上播放

javascript - 有没有办法使用spotify WEB API来检查spotify是否安装?

javascript - 输入类型编号仅允许 2 个数字

javascript - 使用 Styled-Components,如何在 Styled Component 之外设置颜色数组?

reactjs - 可选择列表的客户列表项在 Material 用户界面中不起作用

javascript - 计数器不断重置为 setInterval 循环上声明的变量