Node.js 尝试运行Typescript模拟api服务器时创建React应用程序(模块加载错误)

Node.js 尝试运行Typescript模拟api服务器时创建React应用程序(模块加载错误),node.js,typescript,create-react-app,tsconfig,json-server,Node.js,Typescript,Create React App,Tsconfig,Json Server,我有一个客户端应用程序创建与创建反应应用程序,它使用typescript。我的目录结构是这样的(如果让人困惑,请道歉): 我的main package.json中有几个脚本。其中一个运行命令“ts node mockData/server.ts”在自己的端口上加载my typescript mock api。另一个脚本运行普通的react脚本,以在localhost:3000上加载react客户端。我正在使用一个允许脚本并行的库 在我将其添加到现有应用程序之前,我在自己的项目中使用typescr

我有一个客户端应用程序创建与创建反应应用程序,它使用typescript。我的目录结构是这样的(如果让人困惑,请道歉):

我的main package.json中有几个脚本。其中一个运行命令“ts node mockData/server.ts”在自己的端口上加载my typescript mock api。另一个脚本运行普通的react脚本,以在localhost:3000上加载react客户端。我正在使用一个允许脚本并行的库

在我将其添加到现有应用程序之前,我在自己的项目中使用typescript和json服务器创建了模拟api,以确保它能够正常工作,它确实做到了。但是api的tsconfig中的“module”键需要是“CommonJS”才能进行动态导入。我认为,如果mock api将自己的tsconfig文件设置为CommonJS,那么它将在createreact应用程序项目中工作。但是加载api的脚本会导致错误

当我运行它时,它会说“importxxxx不是一个模块”(在server.ts中)。package.json脚本使用我的主项目中的tsconfig设置加载server.ts文件,使用“module:esnext”,而不是我的api tsconfig中定义的commonJS。如何告诉它使用其他tsconfig中的设置

这是我的CRA package.json中的“我的脚本”部分:

    "scripts": {
    "start": "run-p start:dev start:api",
    "start:dev": "cross-env REACT_APP_API_URL=http://localhost:3000 react-scripts start",
    "start:api": "ts-node ./mockApi/server.ts",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
而start:api脚本就是它在my server.ts(第一次导入)中爆炸的地方:

我想用CreateReact应用程序做的事情难道不可能吗?我试图对此进行研究,但我找不到任何提到这个具体问题的东西。每个json服务器示例都使用JS。但是json服务器为TS提供了@types,所以我不明白为什么这个问题没有被记录下来。当然,其他人会将Typescript与Json服务器和c-r-a一起使用


谢谢

因此,如果有人有这个问题,答案是在我的ui的package.json中有一个脚本,它进入我的模拟api文件夹,并在该文件夹的package.json中运行一个脚本来启动api,然后运行我的create react app脚本。因此,我将root/package.json更改为:

"scripts": {
    "start:api": "cd mockApi && npm run start",
    "start": "run-p start:api start:dev",
    "start:dev": "cross-env REACT_APP_API_URL=http://localhost:3000 react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
然后在我的根文件夹中,只需运行以下命令即可启动:

npm run start
显然在我的mockApi/package.json中

"scripts": {
    "start": "ts-node server.ts"
  }
这很有效

npm run start
"scripts": {
    "start": "ts-node server.ts"
  }