在我的项目中我有 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/