Node.js 在节点JS/TypeScript项目中的模块之间尝试按目录共享代码时未找到模块

Node.js 在节点JS/TypeScript项目中的模块之间尝试按目录共享代码时未找到模块,node.js,typescript,nodes,node-modules,Node.js,Typescript,Nodes,Node Modules,我已经建立了一个示例项目来演示这个问题: 在本例中,有两个项目,示例api(一个mini express项目)和示例共享(一个类库),都使用节点JS/TypeScript。我希望示例api能够使用示例共享的类来避免代码重复。在遵循示例之后,我引用了示例api中package.json中的示例共享项目 "dependencies": { "example-shared": "file:..\\example-shared",

我已经建立了一个示例项目来演示这个问题:

在本例中,有两个项目,示例api(一个mini express项目)和示例共享(一个类库),都使用节点JS/TypeScript。我希望示例api能够使用示例共享的类来避免代码重复。在遵循示例之后,我引用了示例api中
package.json
中的示例共享项目

"dependencies": {
    "example-shared": "file:..\\example-shared",
    "express": "^4.17.1"
}
完成此操作后,在运行
npm安装
之后,VSCode中的intellisense从示例共享项目中查看
ApiClass
,并协助导入

然后,我可以通过NPM通过build命令
tsc--build
运行,这会成功

我还可以看到sym链接已经在示例api
node\u modules
目录中创建

但是,当我尝试使用
npm start
脚本从示例api下运行示例api项目时,我得到了如下错误:

  Error: Cannot find module 'example-shared/apiClass'
  Require stack:

  ...

  code: 'MODULE_NOT_FOUND',
  requireStack: [
    ...
  ]
我曾尝试从不同的位置运行命令,如所述,但迄今为止运气不佳

我正在使用Node(14+)和NPM(7+)的当前稳定版本

我不想通过NPM或git存储库进行共享,因为我觉得这会减慢开发速度


我做错了什么?

这似乎是一个讨论过的问题,请参阅本文

我没有进一步调查,但在
示例共享
文件夹中,您可以从
示例共享/tsconfig.json
中删除
“outDir”
,然后运行
npm运行构建
。 不幸的是,这将在typescript文件旁边发出javascript文件,而不是将它们放在单独的目录中

最后,在
示例api
run
npmi
npm run build
npm start


现在,Express将运行,因为Node使用的是javascript文件而不是typescript文件。

谢谢。您的更改起到了作用,因为我能够运行引用示例共享类的示例api项目,这确实有助于我的理解。我很惊讶没有现成的方法来实现我正在尝试的项目结构。如果typescript支持这一点就太好了,我可能会在有更多时间的时候再次研究这个问题。到目前为止,您可以尝试使用webpack和ts loader来编译源代码,而不是使用
tsc
,也许一些webpack插件可以替换模块路径,使它们指向
dist
文件夹。祝你好运!如果您愿意,我们将不胜感激。我已经研究了bit.dev,它看起来很全面,但对于在模块之间共享几个类来说相当繁重。与此同时,我将选择KISS和duplicate代码,从微服务的角度来看,这并不可怕。