typescript 使用项目引用时找不到模块

lhcgjxsq  于 2023-01-06  发布在  TypeScript
关注(0)|答案(1)|浏览(82)

我正在用typescript创建一个多人地下城爬虫游戏。我有三个typescript项目,一个服务器,一个客户端,还有一个公共项目,这个项目的想法是服务器和客户端都可以共享代码。一个例子是需要在服务器和客户端都完成的地下城创建:

import Dungeon from "./node_modules/@mikewesthad/dungeon/dist/dungeon";
 
export const createDungeon = (randomSeed: string) =>{
    const dungeon = new Dungeon({});

    return dungeon
}

在客户端中导入createDungeon方法可以正常工作,但是在服务器中导入时,一切正常,直到我启动服务器时,才得到错误"Cannot find module '../../common/dungeonUtils'"
IM geussing我有一些配置不正确,

服务器的tsconfig.json文件如下所示:

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "Node16",
    "rootDir": "src",
    "outDir": "dist",
    "allowJs": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
    "references": [
        { "path": "../common" }
    ],
  "include": [
    "src/**/*"
   ]
}

客户端的tsconfig.json文件如下所示:

{
    "compilerOptions": {
        "target": "es2016",
        "module": "es6",
        "strict": false,
        "noImplicitAny": false,
        "noEmit": true,
        "allowJs": true,
        "jsx": "preserve",
        "importHelpers": true,
        "moduleResolution": "node",
        "experimentalDecorators": true,
        "esModuleInterop": true,
        "allowSyntheticDefaultImports": true,
        "sourceMap": true,
        "baseUrl": "./src",
        "paths": {
          "~/*": ["./*"]
        },
        "typeRoots": [
            "node_modules/@types",
            "node_module/phaser/types"
        ],
        "types": [
            "phaser"
        ]
    },
    "references": [
        { "path": "../common" }
    ],
    "include": [
        "src/**/*"
    ]
}

使用以下命令启动服务器

"scripts": {
    "start": "npm run dev",
    "dev": "npm run tsc && npm-run-all --parallel dev:*",
    "dev:tsc": "tsc --watch",
    "dev:nodemon": "nodemon dist/server.js",
    "tsc": "tsc --build"
  },

我试过导入驻留在服务器项目中的 typescript 文件,效果很好。

atmip9wb

atmip9wb1#

使用ts-node代替tsc解决了这个问题。

相关问题