1

我使用这个 plunker 基于我的代码:http ://plnkr.co/edit/81nWDyreYMzkunihfRgX?p=preview

如您所见,远程加载依赖项(带有 http/s 的脚本),然后我使用节点更改它们并用 package.json 和 tsconfig.json 在本地替换所有依赖项。

但是,当像这样将标尺和矩形依赖项更改为本地时:

import {Ruler, Rectangle} from "angular2/src/platform/browser/ruler";

出现错误提示:

"SyntaxError: expected expression, got '<'
Evaluating http://localhost:3000/angular2/src/platform/browser/ruler
Error loading http://localhost:3000/src/main.ts" angular2-polyfills.js:138:14

SyntaxError: expected expression, got '<'
4

3 回答 3

2

https://github.com/angular/angular/pull/8452#issuecomment-220460761

mhevery 12 天前发表评论 我们决定移除 Ruler 服务,因此它不属于公共 API。

于 2016-06-01T09:03:31.653 回答
1

您只需在 SystemJS 配置中添加这一行:

<script src="node_modules/angular2/bundles/angular2-polyfills.js"></script>
<script src="node_modules/systemjs/dist/system.src.js"></script>
<script src="node_modules/rxjs/bundles/Rx.js"></script>
<script src="node_modules/angular2/bundles/angular2.dev.js"></script>

(...)

<script>
  System.config({
    packages: {        
      app: {
        format: 'register',
        defaultExtension: 'js'
      }
    },
    map: {
      'angular2/src/platform/browser/ruler': 'node_modules/angular2/src/platform/browser/ruler.js'
    }
  });
  System.import('app/boot')
        .then(null, console.error.bind(console));
</script>

使用导入时,您将拥有相应的对象:

import {Ruler} from 'angular2/src/platform/browser/ruler';
console.log(Ruler);
// print: Ruler(domAdapter) {
//    this.domAdapter = domAdapter;
// }

希望它可以帮助你,蒂埃里

于 2016-01-31T09:43:10.533 回答
0

我假设您正在从包中导入 Angular2:

angular2.min.js or ( angular.js | angular.dev.js )

我检查文件:./node_modules/angular2/bundles/overview.md您会看到 angular2 由以下部分组成:

  • 角2/核心
  • angular2/普通
  • angular2/编译器
  • angular2/平台/浏览器
  • angular2/平台/common_dom
  • 角度2/仪器

没有src/文件夹!

如果你想angular2/src/platform/browser/ruler在你的应用程序中导入,你必须为node_modules/angular2你的应用程序提供文件夹,这次没有捆绑

如果您使用的是 SystemJS,请考虑以下配置:

System.config({
        defaultJSExtensions: true,
        map: {
            "app": './src',
            "angular2": 'node_modules/angular2',
            'rxjs/operator/*' : 'node_modules/rxjs/add/operator/*',
            "rxjs": 'node_modules/rxjs',
            "reflect-metadata": 'node_modules/reflect-metadata/temp/Reflect.js',
            "zone.js": 'node_modules/zone.js/dist/zone.js'
        },
        packages: {
            app: {
                defaultExtension: 'js',
                format: 'register'
            },
            angular2: {
                defaultExtension: 'js',
            },
            rxjs: {
                defaultExtension: 'js'
            },
            'reflect-metadata': {
                format: 'global'
            }
        }
    });

node_modules文件夹可公开访问!

于 2016-01-31T09:43:00.140 回答