目标
所以我有一个具有这种结构的项目:
目的是在shared
模块中定义公共接口和类。
限制条件
我不想将代码上传到npm以便在本地使用它,也根本不打算上传代码。它应该100%脱机工作。
虽然开发过程应该脱机工作,但是ionic-app
和firebase-functions
模块将部署到Firebase(托管和功能)。因此,shared
模块的代码应该在那里可用。
到目前为止我尝试过的
Function failed on loading user code. Error message: Code in file lib/index.js can't be loaded.
Did you list all required modules in the package.json dependencies?
Detailed stack trace: Error: Cannot find module 'shared'
at Function.Module._resolveFilename (module.js:548:15)
at Function.Module._load (module.js:475:25)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/srv/lib/index.js:5:18)
Run Code Online (Sandbox Code Playgroud)
题
您是否有使用打字稿配置或NPM制作共享模块的解决方案?
请不要将此标记为重复项?我已经尝试过在StackOverflow上找到的任何解决方案。
附加信息 …
我有多个打字稿项目(例如client
和server
),它们共享一些通用功能(位于common
文件夹中)。考虑这个文件夹结构:
+ client
| - tsconfig.json
| + src
| - client.ts
+ common
+ src
- util.ts
Run Code Online (Sandbox Code Playgroud)
client.ts
以这种方式导入实用程序的情况:
import { Util } from '../../common/src/util';
Run Code Online (Sandbox Code Playgroud)
为了简洁起见,我省略了该server
文件夹,该文件夹与client
. 转译到out
文件夹后,我想得到这个简单的平面文件夹结构:
+ client
| + out
| - client.js
| - util.js
Run Code Online (Sandbox Code Playgroud)
...理想情况下,我可以简单地导入与实际文件夹无关的通用实用程序:
import { Util } from './util';
Run Code Online (Sandbox Code Playgroud)
我如何配置tsconfig.json
才能实现这一目标?
rootDirs
我尝试了、baseUrl
和的不同组合paths
,但我仍然在 下获得client
和common
子文件夹(甚至都包括它们的src
子文件夹)out
。