我正在用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 文件,效果很好。
1条答案
按热度按时间atmip9wb1#
使用ts-node代替tsc解决了这个问题。