我正在尝试在非弹出模式下的 create-react-app 中实现 TypeScript 代码共享,但我遇到了臭名昭著的限制,即src不允许在外部导入:
You attempted to import ../../common/src/lib.ts which falls outside of the project src/ directory. [...]
对于非 TypeScript 的情况,这里已被询问并回答,但我无法获得任何使用 TypeScript 的解决方案。具体而言,所提出的解决方案存在的问题是:
设置baseDir在ts-config.json:在这里创建反应的应用程序内抱怨:你的项目baseUrl只能被设置为src或node_modules。Create React App 目前不支持其他值。
基于 react-app-rewired 的方法:更有前途。禁用ModuleScopePlugin让我过去了“在 src 之外尝试导入”错误,但现在的问题是打字稿文件的加载器无法正常运行:
我已经验证它.ts本身没问题:./src从那里复制并导入它工作正常。
我还增加了../../common/src文件夹添加到includes列表中ts-config.json。
我的猜测是 webpack 加载器配置以某种方式有一个规则,可以防止 TypeScript 加载器转译与其预期路径模式不匹配的文件。如何使用 react-app-rewired 解决这个问题?
符号链接源也不起作用——同样的问题。可能是因为 webpack 在内部解析符号链接并在正常加载器规则不适用的路径中看到文件。
基于弹出的解决方案:我现在不想弹出,但我尝试过,基本上又遇到了同样的问题。
我还发现了其他听起来相关但没有回答问题的问题:
我们正在使用Visual Studio 2017并拥有两个独立的Web项目,这些项目应该共享一些React编写的组件TypeScript.还可以有共享JavaScript文件和CSS文件.为此,我们Shared Project在Visual Studio中创建了一个.
Visual Studio 2015中的共享项目和类库有什么区别?
现在,项目只有一个包含此信息的文件.
export const Types = {
Type1: '1',
Type2: '2',
Type3: '3'
}
Run Code Online (Sandbox Code Playgroud)
为了测试,我可以像这样引用它,Visual Studio将找到该文件:
import { Types} from '../../../2/Constants/Types'
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试运行时,webpack我收到以下错误:
TS6059:文件'/2/Constants/Types.ts'不在'rootDir'/ 1'下.'rootDir'应包含所有源文件.