ngmodule模块解析错误,带有意外字符'@'

时间:2018-07-26 18:52:28

标签: angular webpack ng-modules

我已经遍历了https://angular.io/tutorial/toh-pt0上的教程,并且目前正在尝试将该教程编译到/ public /文件夹中,并得到错误信息...

    Module parse failed: Unexpected character '@' You may need an
      appropriate loader to handle this file type. | import {
      HeroSearchComponent } from
      './components/hero-search/hero-search.component'; |  | @NgModule({ |
      imports: [ |     BrowserModule,

我的webpack.config.js很简单

    const path = require('path');

    module.exports = {
      entry: { app: './src/app/app.module.ts' },
      output: { filename: '[name].bundle.js',
        path: path.resolve(__dirname, '../public') },
      module: {
        rules: [{
            test: /\.ts$/,
            use: [
                //'babel-loader',
            ],
            exclude:[/node_modules/],
        }],
      }
    };

和我的app.module.ts

    import { HttpClientInMemoryWebApiModule } from 'angular-in-memory-web-api';
    import { InMemoryDataService } from './services/in-memory-data/in-memory-data.service';
    import { AppRoutingModule } from './app-routing.module';

    import { AppComponent } from './components/app/app.component';
    import { HeroesComponent } from './components/heroes/heroes.component';
    import { HeroDetailComponent } from './components/hero-detail/hero-detail.component';
    import { MessagesComponent } from './components/messages/messages.component';
    import { DashboardComponent } from './components/dashboard/dashboard.component';
    import { HeroSearchComponent } from './components/hero-search/hero-search.component';

    @NgModule({
      imports: [
        BrowserModule,
        FormsModule,
        AppRoutingModule,
        HttpClientModule,
        ...
    })

    export class AppModule { }

如您所见,我尝试使用babel-loader并导致模块构建失败:SyntaxError:带有“ @”的意外令牌。

我最初的想法是我缺少一个加载器,但是我尝试了几个加载器,而babel是唯一更改了我收到的错误消息但无法解决问题的加载器。

该应用程序使用“ ng serve”正确编译,并且它们与标准的angular-cli应用程序一起使用webpack。

我已经浏览了其他几个具有类似问题的问题,其中大多数是css或scss,而不是使用正确的加载程序。我确实相信这是一个加载程序问题,但找不到可以使它正常工作的加载程序。

1 个答案:

答案 0 :(得分:0)

好,所以我终于把它编译好了,我发现还有其他人对此有问题,所以这就是我找到的答案。

在webpack.config.js中

    module.exports = {
      ...
      resolve: {
        extensions: [ '.js', '.ts', '.html' ]
      }

模块:规则:

     {
       test: /\.ts$/,
       use: [
         'awesome-typescript-loader',
         'ng-router-loader'
       ],
       exclude:[/node_modules/],
     },

Babel可能也可以工作,我认为真正的关键是解决扩展问题。