Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript Ionic 2:tsconfig.json修改不起作用,以防止长相对路径_Typescript_Ionic2 - Fatal编程技术网

Typescript Ionic 2:tsconfig.json修改不起作用,以防止长相对路径

Typescript Ionic 2:tsconfig.json修改不起作用,以防止长相对路径,typescript,ionic2,Typescript,Ionic2,我开始了一个爱奥尼亚2项目,我不喜欢的几件事之一是相对路径。我从typescript中阅读了一些文档,并修改了tsconfig.json文件,似乎我所做的修改在ionic应用程序中没有任何效果(但在typescript中工作) 我从文档中了解了typescript的工作原理: 我验证了我对tsconfig.json所做的更改是正确的,因为调用“tsc--traceResolution”告诉我解决方案是有效的。但一旦我启动了ionic应用程序,我就会出现“找不到模块”错误 示例 为了重现这个问题,

我开始了一个爱奥尼亚2项目,我不喜欢的几件事之一是相对路径。我从typescript中阅读了一些文档,并修改了tsconfig.json文件,似乎我所做的修改在ionic应用程序中没有任何效果(但在typescript中工作)

我从文档中了解了typescript的工作原理:

我验证了我对tsconfig.json所做的更改是正确的,因为调用“tsc--traceResolution”告诉我解决方案是有效的。但一旦我启动了ionic应用程序,我就会出现“找不到模块”错误

示例

为了重现这个问题,创建一个全新的ionic 2项目,通过向编译器选项添加以下内容来修改tsconfig.json:

"baseUrl": "./src",
然后创建包含以下内容的文件src/foo.ts:

export class Foo {}
最后,将以下内容添加到app.module.ts:

import { Foo } from 'foo';
new Foo();
据我所知,这应该是可行的,但事实并非如此,为了让它发挥作用,必须具备以下条件(我希望避免):


您需要覆盖默认的webpack.config.js,才能解析与
baseUrl
相关的文件

要将自定义网页包配置文件与ionic一起使用,应将其添加到项目的package.json中:

{
    ...
    "config": { "ionic_webpack": "./webpack.config.js" },
    ...
}
然后在
/webpack.config.js
中:

var path=require('path');
var useDefaultConfig=require('@ionic/app scripts/config/webpack.config.js');
//为了匹配tsconfig.json中的basePath,我们将src添加为模块路径,这意味着我们可以使用
//为我们的代码导入模块样式。如果没有这个,typescript认为有效的导入,比如
//`import{Foo}来自'Foo';`将在构建时失败
useDefaultConfig.dev.resolve.modules.push(path.resolve('src'));
useDefaultConfig.prod.resolve.modules.push(path.resolve('src'));
/**
*导出更新的ionic网页包配置(这仍然包括开发和生产网页包配置)
*/
module.exports=函数(){
返回useDefaultConfig;
};

你在这方面运气好吗?@yafrack No:/我想我会等到爱奥尼亚2决赛发布后再继续,因为我也在爱奥尼亚论坛上打开了这篇文章,也没有任何回复。所以你现在只是在走漫长的路?如果这是一个错误,我不知道为什么它不是一个优先事项。它使大型项目无法扩展:(是的,我现在正在长途跋涉。看到其他人对此感兴趣,我将继续推动它。我决定等到最终发行版,部分原因是我在任何地方都没有得到回应。如果我得到任何更新,我将更新此问题:D.作为额外信息,以便使用自定义网页配置使用ionic创建一个文件,这个文件应该添加到项目的package.json中:“config”:{“ionic_webpack”:“/webpack.config.js”}同样,这个答案确实解决了这个问题,但是因为我很久以前就解决了这个问题,所以我已经用不同的方法解决了这个问题(这也涉及到使用自定义的网页配置)。我目前的做法是这样的:谢谢@NoelDeMartin,我忘了提到这一点-相应地编辑了答案。还有不错的博客帖子!我一直在使用Ionic 3,在完成上述配置后,它仍然不起作用。
{
    ...
    "config": { "ionic_webpack": "./webpack.config.js" },
    ...
}