Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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/ES6:使用绝对路径导入src文件_Typescript - Fatal编程技术网

Typescript/ES6:使用绝对路径导入src文件

Typescript/ES6:使用绝对路径导入src文件,typescript,Typescript,在我的一个文件中,我导入了另一个commonjs模块 import * as at from '../../../at-angular' 我宁愿这样做 import * as at from 'fv/at-angular' 将fv作为我的src目录。因此,我的应用程序文件夹结构如下所示: - src - at-angular.ts - core - services .... 我能否以某种方式使typescript使fv指向src?typescript 1.8(尚未发布

在我的一个文件中,我导入了另一个commonjs模块

import * as at from '../../../at-angular'
我宁愿这样做

import * as at from 'fv/at-angular'
fv
作为我的
src
目录。因此,我的应用程序文件夹结构如下所示:

- src
  - at-angular.ts
  - core
    - services
  ....
我能否以某种方式使typescript使
fv
指向
src

typescript 1.8(尚未发布)将具有路径映射功能:

路径映射

有时模块不直接位于baseUrl下。它是 可以控制在这种情况下如何使用 路径映射。使用以下JSON指定路径映射 结构:

{
    "paths": {
        "pattern-1": "substitution" | ["list of substitutions"],
        "pattern-2": "substitution" | ["list of substitutions"],
        ...
        "pattern-N": "substitution" | ["list of substitutions"]
    }
}
模式和替换是可以有零或一的字符串 星号('*')。模式和替代的解释 将在解决过程一节中描述


这可能正是您想要的。

我能够在我的webpack2设置中获得绝对路径导入。这里是我做的,您必须设置tsconfig.json来支持它。以下是一个例子:

这是我帖子中的例子

网页2解析

/** 
* Assuming the following project structure
*   /src
*     /app
*       /services
*       /models
*     /node_modules
*     .webpack.config.js
*     tsconfig.json
*/
var path = require('path');
module.exports = {
  module: { ... },
  devtool: '...',
  resolve: {
    modules: [
      path.resolve('./node_modules'),
      path.resolve('./app')
    ]
  }
通过定义resolve.modules,我们指示Webpack使用这些路径作为根文件夹搜索(也称为resolve)组件。 类型脚本配置

好了,现在这个网页很好用了;打字脚本呢。如果您使用的是Atom或VSCode等编辑器,则可能会看到一个突出显示的错误,表示TypeScript找不到模块。 这是因为TypeScript不知道此根模块设置。我们还必须在tsconfig.json中提供此信息

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "*": [
        "*",
        "app/*"
      ]
    }
}
通过定义paths对象和baseUrl,我们指示TypeScript编译器在解析导入语句时查看应用程序文件夹。
希望这个简单的例子能够帮助那些在开始使用TypeScript和Webpack2时遇到此配置问题的人解除锁定。

我已经为源代码创建了一个要点,让它们使用绝对路径名或tsconfig.json中定义的任何其他路径 它适用于Browserify+Watchify+Tsify,也适用于Gulp typescript

它将tsconfig.json中定义的路径名和baseUrl转换为它们的相对路径名。
享受吧

这是我的设置,可以正常工作。只需构建,当您想使用node在dist目录中运行代码时,必须传递node\u PATH=dist

将此脚本添加到package.json脚本中,并运行它以测试一切正常

"build-test": "NODE_PATH=dist node --inspect dist"

其可能的副本不是副本。我很确定他的意思是他想用绝对路径捆绑文件。你能在你的答案中包括这个例子吗。链接可能会随着时间的推移而消失,这意味着其他堆栈用户无法从这个Q&ASure@Todd中受益,我的示例补充道。感谢您将其包括在内,但您的答案不起作用,因为这只适用于编译器理解模块的位置。但是在传输之后,路径没有更新,这会在任何应用程序节点或网页中导致错误。@azarus:也许我应该删除这篇文章,我现在不太关注TypeScript。我不知道解决这个问题的正确方法是什么。遗憾的是,没有正确的方法,只能在tsc中以ESnext为目标,然后使用babel转换模块。我已经发布了一个答案,根据tsconfig.json路径映射将模块名称转换到其正确的位置。