ERROR in Entry module not found: SyntaxError: C:\Users\Administrator\...编译出错(webpack)

本文记录了一次使用Webpack启动新demo时遇到的打包失败问题,详细解析了错误信息并找到问题根源在于package.json文件中的非法注释,最终通过删除注释解决了问题。深入探讨了JSON文件的规范,提醒开发者注意细节避免类似陷阱。

今天得空用webpack启动一个新demo,按照官网的步骤一步一步操作,没想到一开始打包就挂了......

执行命令行:npx webpack 报了以下错误:

 最重要看“ERROR in Entry module not found: SyntaxError: C:\Users\Administrator\Desktop\webpack\webpack-demo\package.json (directory description file): SyntaxError: Unexpected token / in JSON at position 71
”这句话,大概意思是“错误出现在入口模块找不到,C:\Users\Administrator\Desktop\webpack\webpack-demo\package.json (directory description file) 语法错误:出现了意想不到的标记

顺着上面的错误提示,我找到了package.json,并找到了关键字:“description”,我的代码是这样的:

在description下面我有一行注释,然后我把注释删除了

 

再运行“npx webpack”

成功了!!!

 那么问题来了,为什么有注释会导致编译失败呢???

查阅了相关信息:

json有两种数据结构:

名称/值对的集合:key : value样式; 
值的有序列表:就是Array; 
而在json的文档中说明只要是不符合上面两种结构的都不被支持,并提示错误 
添加注释//或者/**/在json文件中是不允许的

json怎么添加注释参考文章:https://blog.youkuaiyun.com/hhthwx/article/details/78699700

虽然这不是很大的问题,但也是一个小细节,值得积累以免在以后的项目中采坑。

### 三级标题:Visual Studio 编译错误 `error C2059: syntax error : '...'` 的解决方案 `error C2059: syntax error : '...'` 是 Visual Studio 中常见的语法错误之一,表示编译器在解析源代码时遇到了意料之外的语法结构。该错误通常与宏定义、类型定义、函数声明或预处理指令的格式不正确有关。 #### 常见原因 - **宏定义中使用了不完整的参数列表或省略号(`...`)** 例如,使用可变参数宏(variadic macro)时,格式不正确会导致编译器无法识别,从而报出 `syntax error : '...')` 错误[^1]。 - **函数声明或调用中使用了非法的省略号** 若在函数声明中使用了 `...` 但未正确包含 `<stdarg.h>` 或 `<cstdarg>`,或在非可变参数函数中使用了省略号,也可能导致该错误。 - **预处理指令中的语法错误** 在 `#define`、`#ifdef` 或 `#include` 等预处理指令中使用了非法字符或结构,也可能引发该错误。 #### 解决方案 - **检查宏定义中的可变参数格式** 使用可变参数宏时,应确保格式正确。例如: ```cpp #define LOG(fmt, ...) printf(fmt, __VA_ARGS__) ``` 若未正确使用 `__VA_ARGS__` 或遗漏了逗号,可能导致 `error C2059`[^1]。 - **确保正确使用 `stdarg.h` 或 `cstdarg`** 若函数使用了可变参数(如 `printf` 类型的函数),应包含相应的头文件: ```cpp #include <cstdarg> ``` 并确保函数声明和实现中使用了正确的参数格式: ```cpp void MyPrintf(const char* format, ...); ``` - **检查预处理指令的语法** 确保 `#define`、`#ifdef`、`#endif` 等指令格式正确,未包含非法字符或结构。 - **避免在非宏定义中误用 `...`** 在非可变参数上下文中误用省略号会导致编译器无法识别,应确保其仅用于合法的函数或宏定义中。 #### 示例代码 以下是一个正确使用可变参数宏的示例: ```cpp #include <cstdio> #include <cstdarg> #define LOG(fmt, ...) printf(fmt, __VA_ARGS__) void LogMessage(const char* format, ...) { va_list args; va_start(args, format); vprintf(format, args); va_end(args); } int main() { LOG("This is a log message: %d\n", 42); return 0; } ``` 若在宏定义中遗漏了 `__VA_ARGS__` 或使用了错误的逗号分隔,将导致 `error C2059` 错误。 --- ### 三级标题:其他注意事项 - 使用 `#ifdef _MSC_VER` 可以判断是否在 Visual Studio 编译环境下,以便进行特定的兼容性处理。 - 若宏定义中使用了 `__VA_ARGS__`,应确保其后紧跟逗号,否则可能导致语法错误。 - 在调试过程中,可以使用 `/P` 编译选项输出预处理后的文件,以检查宏展开是否正确。 ---
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值