MongoDB Mongoose模型名含°符号触发Node.js语法错误求助
问题本质与解决方案
这个错误和MongoDB、Mongoose完全无关,是JavaScript标识符(变量名、导出名称)的语法限制导致的——°符号不属于JavaScript合法的标识符字符,所以Node.js的ES模块加载器会抛出语法错误。
正确处理方式
你混淆了「代码里的模型变量名」和「MongoDB中的集合名称」:
- 代码里的变量名必须符合JavaScript标识符规则,不能用
°这类符号 - 如果你想让MongoDB的集合名称包含
°,只需要在定义Mongoose模型时手动指定集合名即可
示例代码:
import mongoose from 'mongoose'; // 定义Schema const temperatureSchema = new mongoose.Schema({ value: Number, timestamp: Date }); // 变量名用合法标识符,第三个参数指定MongoDB集合名为带°的名称 const mCelsius = mongoose.model('mCelsius', temperatureSchema, 'm°celsius'); export default mCelsius;
为什么之前没问题?
旧版本Node.js对JavaScript标识符的解析规则更宽松,没有严格遵循ECMAScript标准,允许部分非标准字符作为标识符。但新版本Node.js收紧了规则,严格执行标准,所以现在会报错。
内容的提问来源于stack exchange,提问作者Jellohouse
相关产品推荐
相关产品推荐

