1

我正在使用rollupjs作为新ionic2@RC.0版本的一部分。该项目使用tsconfig.jsonwithcompilerOptions.module = "es2015"而不是,"commonjs"它对我来说是全新的。

// typescript
import { AgmCoreModule } from 'angular2-google-maps/core';

import从汇总中收到此错误

[17:40:45]  typescript compiler finished in 8.08 s
[17:40:45]  bundle dev started ...
[17:40:55]  Error: Module .../node_modules/angular2-google-maps/core/index.js does not export AgmCoreModule (imported by .../.tmp/shared/shared.module.js)
    at Module.trace (.../node_modules/rollup/dist/rollup.js:7677:29)
    at ModuleScope.findDeclaration 
    ...

导入文件看起来像这样

// index.d.ts
/**
 * angular2-google-maps - Angular 2 components for Google Maps
 * @version v0.14.0
 * @link https://github.com/SebastianM/angular2-google-maps#readme
 * @license MIT
 */
export * from './directives';
export * from './services';
export * from './map-types';
export { LatLngBounds, LatLng, LatLngLiteral, MapTypeStyle } from './services/google-maps-types';
export * from './core-module';


// index.js
/**
 * angular2-google-maps - Angular 2 components for Google Maps
 * @version v0.14.0
 * @link https://github.com/SebastianM/angular2-google-maps#readme
 * @license MIT
 */
"use strict";
function __export(m) {
    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
// main modules
__export(require('./directives'));
__export(require('./services'));
// Google Maps types
// core module
__export(require('./core-module'));

//# sourceMappingURL=index.js.map

我可以将我的导入更改为

import { AgmCoreModule } from 'angular2-google-maps/core/core-modules';

并且rollup没有抱怨,但angular2没有找到从导入的指令angular2-google-maps/core

我应该怎么办?

4

2 回答 2

1

当使用该函数将export * from ...in 中的声明angular2-google-maps/core/index.ts编译为 JS 时__export,Rollup 失去了跟踪导出哪些绑定的能力。esm/如果您改为使用(ECMAScript 模块)目录中可用的库的 ES6 版本,一切都应该工作。

import { AgmCoreModule } from 'angular2-google-maps/esm/core/index.js';
于 2016-10-03T17:20:24.730 回答
0

对于候选版本,Ionic 2 从基于 gulp 的构建过程转变为现在使用 rollup.js 进行捆绑的构建过程。大多数时候第三方库“正常工作” - 但是在某些情况下(取决于库如何导出其组件),您需要明确告诉 rollup.js 正在导出什么。这就是 Angular 2 Google Maps 发生的事情。

这记录在 Ionic 2 App Build Scripts文档页面的“构建”部分。简而言之,你需要为你的项目创建一个自定义的 rollup.config.js 文件来告诉 Rollup 关于AgmCoreModule.

这是一篇博客文章,其中完整记录了确切的步骤。此外,这里是一个Github 存储库,它显示了功能齐全的代码。

于 2016-10-10T14:58:27.840 回答