Angular 5 + Node.js 9运行服务器遇Unexpected token import错误求助
解决AGM库导致Node.js启动时的import语法错误问题
首先咱们得先搞明白为啥会出现这个错误:Node.js 9默认并不支持ES6的import语法(当时ES模块还处于实验阶段,需要特殊配置),而你看到的marker.js是AGM库的ES6源码文件,它本来应该是由Angular的构建工具(比如Webpack、Angular CLI)编译成浏览器能识别的代码,结果现在被Node.js服务器直接执行了,这就导致了语法报错。
下面是几个针对性的解决办法:
1. 检查服务器代码是否错误引入了前端AGM模块
- 先排查你的
server.js或者其他后端代码,有没有不小心require了@agm/core相关的模块。AGM是前端Angular专用库,后端Node.js根本不需要加载它,要是后端代码里误引入了,直接删掉那行代码就行。
2. 确保Angular应用已正确打包,服务器只托管打包后的静态文件
- 如果你是用Node.js服务器来托管Angular前端应用,那必须先执行Angular的打包命令:
这个命令会把Angular应用编译、打包到ng build --proddist目录下。 - 然后修改你的
server.js,让它只托管dist里的静态文件,而不是直接去加载node_modules里的前端库文件。比如用Express的话,代码应该类似这样:const express = require('express'); const app = express(); // 托管dist目录下的静态文件 app.use(express.static(__dirname + '/dist')); // 处理SPA路由,刷新页面不404 app.get('*', (req, res) => { res.sendFile(__dirname + '/dist/index.html'); }); app.listen(3000, () => console.log('Server running on port 3000'));
3. 确认AGM版本与Angular 5兼容
Angular 5比较老,要确保你安装的AGM版本是兼容Angular 5的。你可以安装适配Angular 5-7的版本:
npm install @agm/core@1.1.0 --save
版本不兼容也可能导致一些奇怪的加载问题。
内容的提问来源于stack exchange,提问作者hagai
相关产品推荐
相关产品推荐

