angularjs - 如何解决ParseError : 'import' and 'export' may appear only with 'sourceType: module' when importing UpgradeAdapter?

标签 angularjs angular typescript browserify tsify

我正在尝试将现有的 anguar.js 应用程序升级到 Angular 2,遵循 https://angular.io/docs/ts/latest/guide/upgrade.html

该应用程序已经使用 Typescript 编写,我们正在使用 browserify 和 tsify 来编译和捆绑该应用程序。

使用 npm 安装 Angular 2 依赖项并尝试引导混合应用程序后,browserify 给出以下错误:

/my-project/node_modules/@angular/upgrade/static.js:8
export { downgradeComponent } from './src/aot/downgrade_component';
^
ParseError: 'import' and 'export' may appear only with 'sourceType: module'

只有在添加以下代码后才会出现错误:

import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
import {AppModule} from './app.module';
import {UpgradeModule} from '@angular/upgrade/static';

platformBrowserDynamic().bootstrapModule(AppModule).then(platformRef => {
    const upgrade = platformRef.injector.get(UpgradeModule) as UpgradeModule;
    upgrade.bootstrap(document.documentElement, ['sagaDesktopApp']);
});

这是我的tsconfig.json:

{
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "moduleResolution": "node",
        "sourceMap": true,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "removeComments": false,
        "noImplicitAny": false,
        "suppressImplicitAnyIndexErrors": true
    }
}

任何帮助将不胜感激。

最佳答案

我已经重现了这个问题。这与 @angular/upgrade 中有一个 static.js 文件以及当 Browserify 尝试解析 @angular/upgrade/static 时有关> 它决定:

node_modules/@angular/upgrade/static.js

但是,其目的是解决:

node_modules/@angular/upgrade/static/package.json

static 目录中的 package.json 包含一个 main 条目,供非 ES6 捆绑程序(如 Browserify)使用。

Browserify 模仿 Node's module resolution mechanism它应该在目录之前检查文件,因此要解决此问题,请在导入后添加尾部斜杠:

import { UpgradeModule } from '@angular/upgrade/static/';

Browserify 将首先检查目录并将 package.json 解析为 bundle 。

如果您有兴趣,可以在 this Tsify issue 中找到有关 package.json 文件的 main/module 内容的更多信息。 .

关于angularjs - 如何解决ParseError : 'import' and 'export' may appear only with 'sourceType: module' when importing UpgradeAdapter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41840025/

相关文章:

javascript - Angular 6 - 是否可以在同一页面上使用两个 Angular 元素组件?

javascript - Angular 4 需要导入 Promise

javascript - 包含将发布到 npm 的 js 包的 Typescript 类型的正确方法是什么?

javascript - ChartJS 不断向 X 轴添加一天。我找不到理由。有什么建议吗?

javascript - Angular 2 : what expressions can we interpolate in template

css - Angular Materials 不会将样式应用于组件

javascript - Nest 无法解析导入 JwtService 的服务的依赖关系

angularjs - 使用 Jest 在 Angular 1.x 上进行快照测试

javascript - 如何访问另一个数组中的对象数组中的 ID 或名称?

javascript - 通过 json 数组的 AngularJS ng-repeat 在第二个数组中不起作用