Angular Datatables执行ng add时报Cannot use import statement错误如何解决
问题原因
这个报错是因为安装的angular-datatables@13版本的自动配置脚本(schematics)采用了ES模块语法,而你当前使用的Angular CLI版本或者Node运行环境默认将其作为CommonJS模块加载,因此触发语法错误。且angular-datatables大版本必须和Angular大版本严格对应,跨版本安装会直接导致兼容问题。
解决方案
方案1:安装与Angular版本匹配的angular-datatables(推荐)
- 先卸载已安装的不兼容包:
npm uninstall angular-datatables datatables.net datatables.net-dt - 根据你使用的Angular版本安装对应大版本的依赖:
- Angular 11:执行
npm install angular-datatables@11 datatables.net datatables.net-dt - Angular 12:执行
npm install angular-datatables@12 datatables.net datatables.net-dt - Angular 13:执行
npm install angular-datatables@13 datatables.net datatables.net-dt --skip-confirmation
- Angular 11:执行
- 安装完成后如果自动配置仍失败,直接走方案2手动配置即可。
方案2:跳过自动配置,手动引入
如果所有版本的ng add命令都报错,可以跳过自动配置步骤,手动完成引入:
- 完成上述依赖安装后,打开项目根目录的
angular.json文件,在build>options节点下添加样式和脚本引用:
"styles": [ "node_modules/datatables.net-dt/css/jquery.dataTables.min.css", "src/styles.css" ], "scripts": [ "node_modules/jquery/dist/jquery.min.js", "node_modules/datatables.net/js/jquery.dataTables.min.js" ]
- 打开
src/app/app.module.ts文件,导入并注册DataTables模块:
import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { DataTablesModule } from 'angular-datatables'; // 新增导入 import { AppComponent } from './app.component'; @NgModule({ declarations: [AppComponent], imports: [ BrowserModule, DataTablesModule // 新增到imports数组 ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
- 配置完成后重启项目即可正常使用angular-datatables。
补充说明
- 如果你使用Angular 13时出现
No terminal detected提示,仅需要在安装命令末尾添加--skip-confirmation参数即可跳过交互确认步骤。 - 确保你的Node版本符合对应Angular版本的要求:Angular 11/12要求Node 12.20+ / 14.15+,Angular 13要求Node 14.15+ / 16.10+。
内容的提问来源于stack exchange,提问作者jeconner
相关产品推荐
相关产品推荐

