Improve JSON parse error

This commit is contained in:
Florent Cailhol 2018-05-19 11:09:30 +02:00
parent 6323b173de
commit 252ac31a57
5 changed files with 11 additions and 3 deletions

View File

@ -4,6 +4,7 @@
*/ */
"use strict"; "use strict";
const parseJson = require("json-parse-better-errors");
const asyncLib = require("neo-async"); const asyncLib = require("neo-async");
const path = require("path"); const path = require("path");
const util = require("util"); const util = require("util");
@ -350,7 +351,7 @@ class Compiler extends Tapable {
if (err) return callback(err); if (err) return callback(err);
try { try {
this.records = JSON.parse(content.toString("utf-8")); this.records = parseJson(content.toString("utf-8"));
} catch (e) { } catch (e) {
e.message = "Cannot parse records: " + e.message; e.message = "Cannot parse records: " + e.message;
return callback(e); return callback(e);

View File

@ -4,6 +4,7 @@
*/ */
"use strict"; "use strict";
const parseJson = require("json-parse-better-errors");
const DelegatedSourceDependency = require("./dependencies/DelegatedSourceDependency"); const DelegatedSourceDependency = require("./dependencies/DelegatedSourceDependency");
const DelegatedModuleFactoryPlugin = require("./DelegatedModuleFactoryPlugin"); const DelegatedModuleFactoryPlugin = require("./DelegatedModuleFactoryPlugin");
const ExternalModuleFactoryPlugin = require("./ExternalModuleFactoryPlugin"); const ExternalModuleFactoryPlugin = require("./ExternalModuleFactoryPlugin");
@ -42,7 +43,7 @@ class DllReferencePlugin {
params.compilationDependencies.add(manifest); params.compilationDependencies.add(manifest);
compiler.inputFileSystem.readFile(manifest, (err, result) => { compiler.inputFileSystem.readFile(manifest, (err, result) => {
if (err) return callback(err); if (err) return callback(err);
params["dll reference " + manifest] = JSON.parse( params["dll reference " + manifest] = parseJson(
result.toString("utf-8") result.toString("utf-8")
); );
return callback(); return callback();

View File

@ -4,6 +4,7 @@
*/ */
"use strict"; "use strict";
const parseJson = require("json-parse-better-errors");
const JsonExportsDependency = require("./dependencies/JsonExportsDependency"); const JsonExportsDependency = require("./dependencies/JsonExportsDependency");
class JsonParser { class JsonParser {
@ -12,7 +13,7 @@ class JsonParser {
} }
parse(source, state) { parse(source, state) {
const data = JSON.parse(source); const data = parseJson(source);
state.module.buildInfo.jsonData = data; state.module.buildInfo.jsonData = data;
state.module.buildMeta.exportsType = "named"; state.module.buildMeta.exportsType = "named";
if (typeof data === "object" && data) if (typeof data === "object" && data)

View File

@ -15,6 +15,7 @@
"chrome-trace-event": "^0.1.1", "chrome-trace-event": "^0.1.1",
"enhanced-resolve": "^4.0.0", "enhanced-resolve": "^4.0.0",
"eslint-scope": "^3.7.1", "eslint-scope": "^3.7.1",
"json-parse-better-errors": "^1.0.2",
"loader-runner": "^2.3.0", "loader-runner": "^2.3.0",
"loader-utils": "^1.1.0", "loader-utils": "^1.1.0",
"memory-fs": "~0.4.1", "memory-fs": "~0.4.1",

View File

@ -3538,6 +3538,10 @@ json-loader@^0.5.7:
version "0.5.7" version "0.5.7"
resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d"
json-parse-better-errors@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
json-schema-traverse@^0.3.0: json-schema-traverse@^0.3.0:
version "0.3.1" version "0.3.1"
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"