英文:
Typescript cannot find module but it is actually present
问题
我正在尝试编写一个非常简单的TypeScript项目,但似乎无法正常工作。这是我的项目结构(包括dist文件夹):
├── dist
│ ├── hello.js
│ └── index.js
├── package-lock.json
├── package.json
├── src
│ ├── hello.ts
│ └── index.ts
└── tsconfig.json
我的hello.ts文件:
export function sayHello() {
console.log("Hello");
}
我的index.ts文件:
import { sayHello } from "./hello";
sayHello();
我的tsconfig.json文件:
{
"compilerOptions": {
"rootDirs": ["src"],
"outDir": "dist",
"lib": ["es2020"],
"target": "es2020",
"module": "esnext",
"moduleResolution": "node",
"esModuleInterop": true,
"types": ["node"]
}
}
我的package.json文件:
{
"name": "ts-test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"compile": "tsc",
"start": "npm run compile && node ./dist/index.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"type": "module",
"devDependencies": {
"@types/node": "^20.4.9",
"typescript": "^5.1.6"
}
}
我得到的错误是:
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '****/ts-test/dist/hello' imported from ****/ts-test/dist/index.js
我漏掉了什么?
英文:
I am trying to write a very simple Typescript project but it does not seems to work. Here's my project structure
(including also the dist folder):
├── dist
│ ├── hello.js
│ └── index.js
├── package-lock.json
├── package.json
├── src
│ ├── hello.ts
│ └── index.ts
└── tsconfig.json
my hello.ts:
export function sayHello() {
console.log("Hello");
}
my index.ts:
import { sayHello } from "./hello";
sayHello();
my tsconfig.json:
{
"compilerOptions": {
"rootDirs": ["src"],
"outDir": "dist",
"lib": ["es2020"],
"target": "es2020",
"module": "esnext",
"moduleResolution": "node",
"esModuleInterop": true,
"types": ["node"]
}
}
my package.json:
{
"name": "ts-test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"compile": "tsc",
"start": "npm run compile && node ./dist/index.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"type": "module",
"devDependencies": {
"@types/node": "^20.4.9",
"typescript": "^5.1.6"
}
}
The error I am getting is:
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '****/ts-test/dist/hello' imported from ****/ts-test/dist/index.js
What am I missing?
答案1
得分: 0
请更新你的tsconfig.json文件,包含以下内容:
{
"compilerOptions": {
"rootDir": "src",
"outDir": "dist",
// ...
}
}
英文:
TRY Update your tsconfig.json to include:
{
"compilerOptions": {
"rootDir": "src",
"outDir": "dist",
// ...
}
}
答案2
得分: 0
尝试将你的导入代码更改为以下形式:
import { sayHello } from "./hello.js";
请注意,这是对你提供的代码进行的翻译。
英文:
Try change your import like this:
import { sayHello } "./hello.js";
答案3
得分: 0
从rootDir的定义中:
> 重要的是,rootDir 不会影响哪些文件成为编译的一部分。它与include、exclude或files tsconfig.json设置没有交互作用。
最有可能你还需要"include": ["src/**/*"]
来告诉TypeScript在编译中包含src
目录中的所有文件(include文档)。
英文:
From rootDir definition:
> Importantly, rootDir does not affect which files become part of the compilation. It has no interaction with the include, exclude, or files tsconfig.json settings.
Most likely you also need "include": ["src/**/*"]
to tell typescript to include all files in src
in the compilation (include documentation).
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论