首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角4和模数: Rangy

角4和模数: Rangy
EN

Stack Overflow用户
提问于 2017-05-29 22:53:47
回答 3查看 1.5K关注 0票数 1

我刚开始使用角4,我刚刚创建了一个简单的应用程序,它可以分叉角快速启动,现在我正在尝试导入兰迪

package.json上,我现在有以下依赖项:

代码语言:javascript
复制
"rangy": "^1.3.0",
"@types/rangy": "^0.0.27"

我希望能简单地做一个

代码语言:javascript
复制
import {RangySelection} from 'rangy';

但这只是给了我一个错误

代码语言:javascript
复制
TS2306: File '/projects/mylittleapp/node_modules/@types/rangy/index.d.ts' is not a module.

我做错了什么?

编辑:

我知道这与SystemJS和如何在那里导入模块有关,但我不知道如何.

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-01 17:07:20

TypeScript

根据@types/rangy,您有两个选项:

备选方案1. import 'rangy'

  • 你得到全局变量‘范围’
  • 不适用于SystemJS

备选方案2. import * as rangy from 'rangy'

  • 您得到局部变量'rangy‘(或您定义的任何东西)。

您不能执行import rangy from 'rangy',因为rangy没有默认的es6导出。

您不能执行import { RangySelection } from 'rangy',因为rangy不是es6兼容的模块。接口RangySelection将提供这两种导入选项。

角(SystemJS)

要使模块正确地从服务器返回,您必须告诉SystemJS应该在哪里查找它。这是在System.config内部完成的

将行'rangy': 'npm:rangy/lib/rangy-core.js',添加到map配置元素中。从角快速启动的整个配置:

代码语言:javascript
复制
System.config({
  paths: {
    // paths serve as alias
    'npm:': 'node_modules/'
  },
  // map tells the System loader where to look for things
  map: {
    // our app is within the app folder
    'app': 'app',

    // angular bundles
    '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
    '@angular/common': 'npm:@angular/common/bundles/common.umd.js',
    '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
    '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
    '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
    '@angular/http': 'npm:@angular/http/bundles/http.umd.js',
    '@angular/router': 'npm:@angular/router/bundles/router.umd.js',
    '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',

    // other libraries
    'rxjs':                      'npm:rxjs',
    'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js',
    'rangy': 'npm:rangy/lib/rangy-core.js',
  },
  // packages tells the System loader how to load when no filename and/or no extension
  packages: {
    app: {
      defaultExtension: 'js',
      meta: {
        './*.js': {
          loader: 'systemjs-angular-loader.js'
        }
      }
    },
    rxjs: {
      defaultExtension: 'js'
    }
  }
});
票数 1
EN

Stack Overflow用户

发布于 2017-05-30 01:35:22

Rangy的类型定义表明它没有导出模块。它只声明一个名为rangy的变量。这样你就可以像:

代码语言:javascript
复制
import "rangy";

rangy.getSelection();
票数 1
EN

Stack Overflow用户

发布于 2017-06-01 12:44:17

范围广泛的npm包不提供任何类型。这意味着您必须通过定义一个简单的类型来利用它:

代码语言:javascript
复制
declare var rangy:any;

这使得rangy在您的代码中可用,您可以随时随地使用它。

使用角cli,您可以在.ange-cli.json中包含所需的.js文件:

代码语言:javascript
复制
"scripts": [
    "../node_modules/rangy/lib/rangy-core.js"
  ]

否则,将cdn托管并将其发布到index.html。

下面是一个使用cdn版本的柱塞示例:

柱塞实例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44251158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档