【问题标题】:Relative path Issue - TypeScript compiler behaving differently on Windows vs Linux相对路径问题 - TypeScript 编译器在 Windows 和 Linux 上的行为不同
【发布时间】:2016-01-06 08:28:56
【问题描述】:

我使用relative Paths 导入在我的Angular2TypeScript 应用程序中创建的模块。

示例 (Source Code)

import {Http} from 'angular2/http';
import {Injectable} from 'angular2/core';
import {Person} from '../core/Person';  

这在 windows (tsc v1.7.5) 上编译良好,但无法在 Linux 上加载。

问题:

  1. 为什么在 linux 上会这样?
  2. 是否有标准的方式在 typescript 中声明模块的路径?

tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "system",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false
  },
  "exclude": [
    "node_modules",
     "wwwroot/lib"
  ]
}

Ubuntu 14.04 上的错误

wwwroot/app/people/people.service.ts(3,22):错误 TS2307:找不到模块“../core/Person”。 wwwroot/app/routes.config.ts(1,22):错误 TS2307:找不到模块“./home/Home”。 wwwroot/app/routes.config.ts(2,23):错误 TS2307:找不到模块“./about/About”。 wwwroot/app/routes.config.ts(3,24):错误 TS2307:找不到模块“./people/People”。 wwwroot/app/routes.config.ts(4,30):错误 TS2307:找不到模块 './people/PersonDetail'。

从 github 上的源代码可以看到,Person.ts 包含位于 wwwroot\app\core\Person.ts 的类 person

请帮我解决这个问题。提前致谢。

【问题讨论】:

  • 你确定在 Ubuntu 上使用相同版本的 typescript (1.7.5) 吗?我看到你的package.json"typescript": "^1.6.2"
  • 是的,我在全球范围内安装了 tsc。我在更正 package.json 中的版本后尝试运行,仍然得到相同的错误。

标签: ubuntu-14.04 angular linux-mint typescript1.7


【解决方案1】:

我发现了问题。

Windows 会忽略目录和文件名的大小写,而 linux 不会。

在将所有文件夹和文件名保持小写并在导入中复制相同名称之后。编译成功。

【讨论】:

  • 这是我的问题的解决方案。 OSX 也是如此。 OSX 在导入时不关心大小写,但 Ubuntu 适合我。匹配案例修复它。
  • 这对我有用。将文件导入更改为小写适用于 ng serve。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-02
  • 2021-05-27
  • 1970-01-01
  • 2014-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多