node.js的commonJS和reactjs的es6存在多个tsconfig.json问题

node.js的commonJS和reactjs的es6存在多个tsconfig.json问题,node.js,reactjs,typescript,typescript2.0,tsconfig,Node.js,Reactjs,Typescript,Typescript2.0,Tsconfig,typescript的当前文件夹结构: ts_dev --client *components.tsx *tsconfig.json --server *server.ts *tsconfig.json --share *utility.ts Node.js服务器需要使用commonjs模块,而es2015用于客户端组件。我将客户端和服务器使用的共享文件夹放在服务器目录下,因为它需要commonJS用于Node.js 服务器中的tsconfig.json: {

typescript的当前文件夹结构:

ts_dev
--client
  *components.tsx
  *tsconfig.json

--server
  *server.ts
  *tsconfig.json
  --share
    *utility.ts
Node.js服务器需要使用
commonjs
模块,而
es2015
用于客户端组件。我将客户端服务器使用的共享文件夹放在服务器目录下,因为它需要
commonJS
用于Node.js

服务器中的tsconfig.json

{
  "compilerOptions": {
    "module": "commonJS",
    "target": "es2015",
    "moduleResolution": "node",
    "outDir": "../../src",
    "lib": ["es6", "dom"],
    "types": ["reflect-metadata","system"],
    "jsx": "react"
  },
  "exclude": [
    "node_modules",
  ]
}
客户端中的tsconfig.json:

{
  "compilerOptions": {
    "module": "es2015",
    "target": "es2015",
    "moduleResolution": "node",
    "outDir": "../../src",
    "lib": ["es6", "dom"],
    "types": ["reflect-metadata","system"],
    "jsx": "react"
  },
  "exclude": [
    "node_modules",
  ]
}

然而,我发现
share
中的脚本总是在es6(使用导出、导入等)中编写,而不是在commonJS中编写,这破坏了我的服务器。我怀疑这是由
客户端中的tsconfig造成的。如何解决此问题?

我建议在带有文件globs的每个
tsconfig.json
文件中使用
include
选项,以限制通过每个配置文件编译的文件


我通过使用不同的
outDirs
解决了我的一个类似问题。我认为发生在您身上的是,您编译了两次源文件,最后一次将JS编译到
es2015
,覆盖了第一次。换句话说,首先编译
服务器
版本,然后编译
客户端
版本并覆盖它,因为输出将进入同一目录。

等等,目录相同,是的,但文件名不同。那箱子里是什么?如果我想将一个
*.ts
文件编译成
commonjs
,然后再编译成web(即
none
module)?@vintproykt你能在相应的include部分使用文件globs来匹配你想要包含在特定配置文件中的文件名吗?我最后得到了一个不明显的(起初)结论是,我需要在独立的存储库中分离这些目录,并处理进一步项目的monorepo体系结构。它现在是我作为非模块和VisualStudio代码扩展所需要的应用程序,它们不再有编译冲突了!