Code Monkey home page Code Monkey logo

Comments (17)

vweevers avatar vweevers commented on June 11, 2024 3

@samducker You can pin to node-gyp-build 4.6.1, which doesn't have this issue.

from node-gyp-build.

mafintosh avatar mafintosh commented on June 11, 2024 2

Fixed in 4.7.1

from node-gyp-build.

bmackio avatar bmackio commented on June 11, 2024

The error comes from webpack: https://github.com/webpack/webpack/blob/87660921808566ef3b8796f8df61bd79fc026108/lib/dependencies/CommonJsImportsParserPlugin.js#L216

from node-gyp-build.

vweevers avatar vweevers commented on June 11, 2024

cc @kasperisager @mafintosh because you added require.addon in #61. What platform is that for?

from node-gyp-build.

kasperisager avatar kasperisager commented on June 11, 2024

@bmackio @vweevers If this can be fixed without eval() then I'm all ears! We need this for our custom JavaScript runtime.

from node-gyp-build.

vweevers avatar vweevers commented on June 11, 2024

Would something like this work?

// Workaround to fix webpack's build warnings: 'the request of a dependency is an expression'
var runtimeRequire = typeof __webpack_require__ === 'function' ? __non_webpack_require__ : require // eslint-disable-line

from node-gyp-build.

mafintosh avatar mafintosh commented on June 11, 2024

We can try for sure

from node-gyp-build.

mafintosh avatar mafintosh commented on June 11, 2024

Can someone verify if this fixes the issue: #63

from node-gyp-build.

bmackio avatar bmackio commented on June 11, 2024

@mafintosh injecting that code did not work locally on my machine. I think the issue is the conditional as webpack seems to be "requiring" a static import, which conflicts with the use case internally for node-pre-gyp

I'm going to lookin into the following code on webpack to try to understand the source of the message a little better before I circle back:

const requireAsExpressionHandler = expr => {
			const dep = new CommonJsRequireContextDependency(
				{
					request: options.unknownContextRequest,
					recursive: options.unknownContextRecursive,
					regExp: options.unknownContextRegExp,
					mode: "sync"
				},
				/** @type {Range} */ (expr.range),
				undefined,
				parser.scope.inShorthand,
				getContext()
			);
			dep.critical =
				options.unknownContextCritical &&
				"require function is used in a way in which dependencies cannot be statically extracted";
			dep.loc = /** @type {DependencyLocation} */ (expr.loc);
			dep.optional = !!parser.scope.inTry;
			parser.state.current.addDependency(dep);
			return true;
		};

from node-gyp-build.

bmackio avatar bmackio commented on June 11, 2024

I could not find where the warning gets triggered in webpack, so I started a disucssion thread on webpack to try to better understand their requirements: webpack/webpack#17819

from node-gyp-build.

bmackio avatar bmackio commented on June 11, 2024

The issue could be due to a modified output in the build: webpack/webpack#16793

I'll continue to investigate as I have time, but need to get back to what I was doing. If anyone can identify the way in which next/typescript changes the node-gyp-build require statement (if at all) that will reveal the actual statement webpack is reading and may tell us why the warning is being triggered

from node-gyp-build.

bmackio avatar bmackio commented on June 11, 2024

If I do a static build, by adding:

const nextConfig = {
    distDir: 'dist',
    output: 'export',

My dist/server/vendor-chunks/node-gyp-build.js looks like this:

"use strict";
/*
 * ATTENTION: An "eval-source-map" devtool has been used.
 * This devtool is neither made for production nor for readable output files.
 * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
 * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
 * or disable the default devtool with "devtool: false".
 * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
 */
exports.id = "vendor-chunks/node-gyp-build";
exports.ids = ["vendor-chunks/node-gyp-build"];
exports.modules = {

/***/ "(rsc)/./node_modules/node-gyp-build/index.js":
/*!**********************************************!*\
  !*** ./node_modules/node-gyp-build/index.js ***!
  \**********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

eval("\nif (typeof __webpack_require__(\"(rsc)/./node_modules/node-gyp-build sync recursive\").addon === \"function\") {\n    module.exports = __webpack_require__(\"(rsc)/./node_modules/node-gyp-build sync recursive\").addon.bind(__webpack_require__(\"(rsc)/./node_modules/node-gyp-build sync recursive\"));\n} else {\n    module.exports = __webpack_require__(/*! ./node-gyp-build.js */ \"(rsc)/./node_modules/node-gyp-build/node-gyp-build.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbm9kZS1neXAtYnVpbGQvaW5kZXguanMiLCJtYXBwaW5ncyI6IjtBQUFBLElBQUksT0FBT0EseUVBQU9BLENBQUNDLEtBQUssS0FBSyxZQUFZO0lBQ3ZDQyxPQUFPQyxPQUFPLEdBQUdILHlFQUFPQSxDQUFDQyxLQUFLLENBQUNHLElBQUksQ0FBQ0oseUVBQU9BO0FBQzdDLE9BQU87SUFDTEUsd0hBQXlCO0FBQzNCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyY2VsLWt2LXJlZGlzLXN0YXJ0ZXIvLi9ub2RlX21vZHVsZXMvbm9kZS1neXAtYnVpbGQvaW5kZXguanM/MGI0NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpZiAodHlwZW9mIHJlcXVpcmUuYWRkb24gPT09ICdmdW5jdGlvbicpIHsgLy8gaWYgdGhlIHBsYXRmb3JtIHN1cHBvcnRzIG5hdGl2ZSByZXNvbHZpbmcgcHJlZmVyIHRoYXRcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlLmFkZG9uLmJpbmQocmVxdWlyZSlcbn0gZWxzZSB7IC8vIGVsc2UgdXNlIHRoZSBydW50aW1lIHZlcnNpb24gaGVyZVxuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbm9kZS1neXAtYnVpbGQuanMnKVxufVxuIl0sIm5hbWVzIjpbInJlcXVpcmUiLCJhZGRvbiIsIm1vZHVsZSIsImV4cG9ydHMiLCJiaW5kIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/node-gyp-build/index.js\n");

/***/ }),

/***/ "(rsc)/./node_modules/node-gyp-build/node-gyp-build.js":
/*!*******************************************************!*\
  !*** ./node_modules/node-gyp-build/node-gyp-build.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

eval("\nvar fs = __webpack_require__(/*! fs */ \"fs\");\nvar path = __webpack_require__(/*! path */ \"path\");\nvar os = __webpack_require__(/*! os */ \"os\");\n// Workaround to fix webpack's build warnings: 'the request of a dependency is an expression'\nvar runtimeRequire =  true ? require : 0 // eslint-disable-line\n;\nvar vars = process.config && process.config.variables || {};\nvar prebuildsOnly = !!process.env.PREBUILDS_ONLY;\nvar abi = process.versions.modules // TODO: support old node where this is undef\n;\nvar runtime = isElectron() ? \"electron\" : isNwjs() ? \"node-webkit\" : \"node\";\nvar arch = process.env.npm_config_arch || os.arch();\nvar platform = process.env.npm_config_platform || os.platform();\nvar libc = process.env.LIBC || (isAlpine(platform) ? \"musl\" : \"glibc\");\nvar armv = process.env.ARM_VERSION || (arch === \"arm64\" ? \"8\" : vars.arm_version) || \"\";\nvar uv = (process.versions.uv || \"\").split(\".\")[0];\nmodule.exports = load;\nfunction load(dir) {\n    return runtimeRequire(load.resolve(dir));\n}\nload.resolve = load.path = function(dir) {\n    dir = path.resolve(dir || \".\");\n    try {\n        var name = runtimeRequire(path.join(dir, \"package.json\")).name.toUpperCase().replace(/-/g, \"_\");\n        if (process.env[name + \"_PREBUILD\"]) dir = process.env[name + \"_PREBUILD\"];\n    } catch (err) {}\n    if (!prebuildsOnly) {\n        var release = getFirst(path.join(dir, \"build/Release\"), matchBuild);\n        if (release) return release;\n        var debug = getFirst(path.join(dir, \"build/Debug\"), matchBuild);\n        if (debug) return debug;\n    }\n    var prebuild = resolve(dir);\n    if (prebuild) return prebuild;\n    var nearby = resolve(path.dirname(process.execPath));\n    if (nearby) return nearby;\n    var target = [\n        \"platform=\" + platform,\n        \"arch=\" + arch,\n        \"runtime=\" + runtime,\n        \"abi=\" + abi,\n        \"uv=\" + uv,\n        armv ? \"armv=\" + armv : \"\",\n        \"libc=\" + libc,\n        \"node=\" + process.versions.node,\n        process.versions.electron ? \"electron=\" + process.versions.electron : \"\",\n         true ? \"webpack=true\" : 0 // eslint-disable-line\n    ].filter(Boolean).join(\" \");\n    throw new Error(\"No native build was found for \" + target + \"\\n    loaded from: \" + dir + \"\\n\");\n    function resolve(dir) {\n        // Find matching \"prebuilds/<platform>-<arch>\" directory\n        var tuples = readdirSync(path.join(dir, \"prebuilds\")).map(parseTuple);\n        var tuple = tuples.filter(matchTuple(platform, arch)).sort(compareTuples)[0];\n        if (!tuple) return;\n        // Find most specific flavor first\n        var prebuilds = path.join(dir, \"prebuilds\", tuple.name);\n        var parsed = readdirSync(prebuilds).map(parseTags);\n        var candidates = parsed.filter(matchTags(runtime, abi));\n        var winner = candidates.sort(compareTags(runtime))[0];\n        if (winner) return path.join(prebuilds, winner.file);\n    }\n};\nfunction readdirSync(dir) {\n    try {\n        return fs.readdirSync(dir);\n    } catch (err) {\n        return [];\n    }\n}\nfunction getFirst(dir, filter) {\n    var files = readdirSync(dir).filter(filter);\n    return files[0] && path.join(dir, files[0]);\n}\nfunction matchBuild(name) {\n    return /\\.node$/.test(name);\n}\nfunction parseTuple(name) {\n    // Example: darwin-x64+arm64\n    var arr = name.split(\"-\");\n    if (arr.length !== 2) return;\n    var platform = arr[0];\n    var architectures = arr[1].split(\"+\");\n    if (!platform) return;\n    if (!architectures.length) return;\n    if (!architectures.every(Boolean)) return;\n    return {\n        name,\n        platform,\n        architectures\n    };\n}\nfunction matchTuple(platform, arch) {\n    return function(tuple) {\n        if (tuple == null) return false;\n        if (tuple.platform !== platform) return false;\n        return tuple.architectures.includes(arch);\n    };\n}\nfunction compareTuples(a, b) {\n    // Prefer single-arch prebuilds over multi-arch\n    return a.architectures.length - b.architectures.length;\n}\nfunction parseTags(file) {\n    var arr = file.split(\".\");\n    var extension = arr.pop();\n    var tags = {\n        file: file,\n        specificity: 0\n    };\n    if (extension !== \"node\") return;\n    for(var i = 0; i < arr.length; i++){\n        var tag = arr[i];\n        if (tag === \"node\" || tag === \"electron\" || tag === \"node-webkit\") {\n            tags.runtime = tag;\n        } else if (tag === \"napi\") {\n            tags.napi = true;\n        } else if (tag.slice(0, 3) === \"abi\") {\n            tags.abi = tag.slice(3);\n        } else if (tag.slice(0, 2) === \"uv\") {\n            tags.uv = tag.slice(2);\n        } else if (tag.slice(0, 4) === \"armv\") {\n            tags.armv = tag.slice(4);\n        } else if (tag === \"glibc\" || tag === \"musl\") {\n            tags.libc = tag;\n        } else {\n            continue;\n        }\n        tags.specificity++;\n    }\n    return tags;\n}\nfunction matchTags(runtime, abi) {\n    return function(tags) {\n        if (tags == null) return false;\n        if (tags.runtime !== runtime && !runtimeAgnostic(tags)) return false;\n        if (tags.abi !== abi && !tags.napi) return false;\n        if (tags.uv && tags.uv !== uv) return false;\n        if (tags.armv && tags.armv !== armv) return false;\n        if (tags.libc && tags.libc !== libc) return false;\n        return true;\n    };\n}\nfunction runtimeAgnostic(tags) {\n    return tags.runtime === \"node\" && tags.napi;\n}\nfunction compareTags(runtime) {\n    // Precedence: non-agnostic runtime, abi over napi, then by specificity.\n    return function(a, b) {\n        if (a.runtime !== b.runtime) {\n            return a.runtime === runtime ? -1 : 1;\n        } else if (a.abi !== b.abi) {\n            return a.abi ? -1 : 1;\n        } else if (a.specificity !== b.specificity) {\n            return a.specificity > b.specificity ? -1 : 1;\n        } else {\n            return 0;\n        }\n    };\n}\nfunction isNwjs() {\n    return !!(process.versions && process.versions.nw);\n}\nfunction isElectron() {\n    if (process.versions && process.versions.electron) return true;\n    if (process.env.ELECTRON_RUN_AS_NODE) return true;\n    return  false && 0;\n}\nfunction isAlpine(platform) {\n    return platform === \"linux\" && fs.existsSync(\"/etc/alpine-release\");\n}\n// Exposed for unit tests\n// TODO: move to lib\nload.parseTags = parseTags;\nload.matchTags = matchTags;\nload.compareTags = compareTags;\nload.parseTuple = parseTuple;\nload.matchTuple = matchTuple;\nload.compareTuples = compareTuples;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbm9kZS1neXAtYnVpbGQvbm9kZS1neXAtYnVpbGQuanMiLCJtYXBwaW5ncyI6IjtBQUFBLElBQUlBLEtBQUtDLG1CQUFPQSxDQUFDO0FBQ2pCLElBQUlDLE9BQU9ELG1CQUFPQSxDQUFDO0FBQ25CLElBQUlFLEtBQUtGLG1CQUFPQSxDQUFDO0FBRWpCLDZGQUE2RjtBQUM3RixJQUFJRyxpQkFBaUIsS0FBK0IsR0FBYUUsT0FBdUJBLEdBQUdMLENBQU9BLENBQUMsc0JBQXNCOztBQUV6SCxJQUFJTSxPQUFPLFFBQVNFLE1BQU0sSUFBSUQsUUFBUUMsTUFBTSxDQUFDQyxTQUFTLElBQUssQ0FBQztBQUM1RCxJQUFJQyxnQkFBZ0IsQ0FBQyxDQUFDSCxRQUFRSSxHQUFHLENBQUNDLGNBQWM7QUFDaEQsSUFBSUMsTUFBTU4sUUFBUU8sUUFBUSxDQUFDQyxPQUFPLENBQUMsNkNBQTZDOztBQUNoRixJQUFJQyxVQUFVQyxlQUFlLGFBQWNDLFdBQVcsZ0JBQWdCO0FBRXRFLElBQUlDLE9BQU9aLFFBQVFJLEdBQUcsQ0FBQ1MsZUFBZSxJQUFJbEIsR0FBR2lCLElBQUk7QUFDakQsSUFBSUUsV0FBV2QsUUFBUUksR0FBRyxDQUFDVyxtQkFBbUIsSUFBSXBCLEdBQUdtQixRQUFRO0FBQzdELElBQUlFLE9BQU9oQixRQUFRSSxHQUFHLENBQUNhLElBQUksSUFBS0MsQ0FBQUEsU0FBU0osWUFBWSxTQUFTLE9BQU07QUFDcEUsSUFBSUssT0FBT25CLFFBQVFJLEdBQUcsQ0FBQ2dCLFdBQVcsSUFBS1IsQ0FBQUEsU0FBUyxVQUFVLE1BQU1iLEtBQUtzQixXQUFXLEtBQUs7QUFDckYsSUFBSUMsS0FBSyxDQUFDdEIsUUFBUU8sUUFBUSxDQUFDZSxFQUFFLElBQUksRUFBQyxFQUFHQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFFbERDLE9BQU9DLE9BQU8sR0FBR0M7QUFFakIsU0FBU0EsS0FBTUMsR0FBRztJQUNoQixPQUFPL0IsZUFBZThC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LFVBQVUsR0FBR0E7QUFDbEJ6QixLQUFLMkIsVUFBVSxHQUFHQTtBQUNsQjNCLEtBQUs2QixhQUFhLEdBQUdBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyY2VsLWt2LXJlZGlzLXN0YXJ0ZXIvLi9ub2RlX21vZHVsZXMvbm9kZS1neXAtYnVpbGQvbm9kZS1neXAtYnVpbGQuanM/ZGUzNiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZnMgPSByZXF1aXJlKCdmcycpXG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxudmFyIG9zID0gcmVxdWlyZSgnb3MnKVxuXG4vLyBXb3JrYXJvdW5kIHRvIGZpeCB3ZWJwYWNrJ3MgYnVpbGQgd2FybmluZ3M6ICd0aGUgcmVxdWVzdCBvZiBhIGRlcGVuZGVuY3kgaXMgYW4gZXhwcmVzc2lvbidcbnZhciBydW50aW1lUmVxdWlyZSA9IHR5cGVvZiBfX3dlYnBhY2tfcmVxdWlyZV9fID09PSAnZnVuY3Rpb24nID8gX19ub25fd2VicGFja19yZXF1aXJlX18gOiByZXF1aXJlIC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxudmFyIHZhcnMgPSAocHJvY2Vzcy5jb25maWcgJiYgcHJvY2Vzcy5jb25maWcudmFyaWFibGVzKSB8fCB7fVxudmFyIHByZWJ1aWxkc09ubHkgPSAhIXByb2Nlc3MuZW52LlBSRUJVSUxEU19PTkxZXG52YXIgYWJpID0gcHJvY2Vzcy52ZXJzaW9ucy5tb2R1bGVzIC8vIFRPRE86IHN1cHBvcnQgb2xkIG5vZGUgd2hlcmUgdGhpcyBpcyB1bmRlZlxudmFyIHJ1bnRpbWUgPSBpc0VsZWN0cm9uKCkgPyAnZWxlY3Ryb24nIDogKGlzTndqcygpID8gJ25vZGUtd2Via2l0JyA6ICdub2RlJylcblxudmFyIGFyY2ggPSBwcm9jZXNzLmVudi5ucG1fY29uZmlnX2FyY2ggfHwgb3MuYXJjaCgpXG52YXIgcGxhdGZvcm0gPSBwcm9jZXNzLmVudi5ucG1fY29uZmlnX3BsYXRmb3JtIHx8IG9zLnBsYXRmb3JtKClcbnZhciBsaWJjID0gcHJvY2Vzcy5lbnYuTElCQyB8fCAoaXNBbHBpbmUocGxhdGZvcm0pID8gJ211c2wnIDogJ2dsaWJjJylcbnZhciBhcm12ID0gcHJvY2Vzcy5lbnYuQVJNX1ZFUlNJT04gfHwgKGFyY2ggPT09ICdhcm02NCcgPyAnOCcgOiB2YXJzLmFybV92ZXJzaW9uKSB8fCAnJ1xudmFyIHV2ID0gKHByb2Nlc3MudmVyc2lvbnMudXYgfHwgJycpLnNwbGl0KCcuJylbMF1cblxubW9kdWxlLmV4cG9ydHMgPSBsb2FkXG5cbmZ1bmN0aW9uIGxvYWQgKGRpcikge1xuICByZXR1cm4gcnVudGltZVJlcXVpcmUobG9hZC5yZXNvbHZlKGRpcikpXG59XG5cbmxvYWQucmVzb2x2ZSA9IGxvYWQucGF0aCA9IGZ1bmN0aW9uIChkaXIpIHtcbiAgZGlyID0gcGF0aC5yZXNvbHZlKGRpciB8fCAnLicpXG5cbiAgdHJ5IHtcbiAgICB2YXIgbmFtZSA9IHJ1bnRpbWVSZXF1aXJlKHBhdGguam9pbihkaXIsICdwYWNrYWdlLmpzb24nKSkubmFtZS50b1VwcGVyQ2FzZSgpLnJlcGxhY2UoLy0vZywgJ18nKVxuICAgIGlmIChwcm9jZXNzLmVudltuYW1lICsgJ19QUkVCVUlMRCddKSBkaXIgPSBwcm9jZXNzLmVudltuYW1lICsgJ19QUkVCVUlMRCddXG4gIH0gY2F0Y2ggKGVycikge31cblxuICBpZiAoIXByZWJ1aWxkc09ubHkpIHtcbiAgICB2YXIgcmVsZWFzZSA9IGdldEZpcnN0KHBhdGguam9pbihkaXIsICdidWlsZC9SZWxlYXNlJyksIG1hdGNoQnVpbGQpXG4gICAgaWYgKHJlbGVhc2UpIHJldHVybiByZWxlYXNlXG5cbiAgICB2YXIgZGVidWcgPSBnZXRGaXJzdChwYXRoLmpvaW4oZGlyLCAnYnVpbGQvRGVidWcnKSwgbWF0Y2hCdWlsZClcbiAgICBpZiAoZGVidWcpIHJldHVybiBkZWJ1Z1xuICB9XG5cbiAgdmFyIHByZWJ1aWxkID0gcmVzb2x2ZShkaXIpXG4gIGlmIChwcmVidWlsZCkgcmV0dXJuIHByZWJ1aWxkXG5cbiAgdmFyIG5lYXJieSA9IHJlc29sdmUocGF0aC5kaXJuYW1lKHByb2Nlc3MuZXhlY1BhdGgpKVxuICBpZiAobmVhcmJ5KSByZXR1cm4gbmVhcmJ5XG5cbiAgdmFyIHRhcmdldCA9IFtcbiAgICAncGxhdGZvcm09JyArIHBsYXRmb3JtLFxuICAgICdhcmNoPScgKyBhcmNoLFxuICAgICdydW50aW1lPScgKyBydW50aW1lLFxuICAgICdhYmk9JyArIGFiaSxcbiAgICAndXY9JyArIHV2LFxuICAgIGFybXYgPyAnYXJtdj0nICsgYXJtdiA6ICcnLFxuICAgICdsaWJjPScgKyBsaWJjLFxuICAgICdub2RlPScgKyBwcm9jZXNzLnZlcnNpb25zLm5vZGUsXG4gICAgcHJvY2Vzcy52ZXJzaW9ucy5lbGVjdHJvbiA/ICdlbGVjdHJvbj0nICsgcHJvY2Vzcy52ZXJzaW9ucy5lbGVjdHJvbiA6ICcnLFxuICAgIHR5cGVvZiBfX3dlYnBhY2tfcmVxdWlyZV9fID09PSAnZnVuY3Rpb24nID8gJ3dlYnBhY2s9dHJ1ZScgOiAnJyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gIF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKVxuXG4gIHRocm93IG5ldyBFcnJvcignTm8gbmF0aXZlIGJ1aWxkIHdhcyBmb3VuZCBmb3IgJyArIHRhcmdldCArICdcXG4gICAgbG9hZGVkIGZyb206ICcgKyBkaXIgKyAnXFxuJylcblxuICBmdW5jdGlvbiByZXNvbHZlIChkaXIpIHtcbiAgICAvLyBGaW5kIG1hdGNoaW5nIFwicHJlYnVpbGRzLzxwbGF0Zm9ybT4tPGFyY2g+XCIgZGlyZWN0b3J5XG4gICAgdmFyIHR1cGxlcyA9IHJlYWRkaXJTeW5jKHBhdGguam9pbihkaXIsICdwcmVidWlsZHMnKSkubWFwKHBhcnNlVHVwbGUpXG4gICAgdmFyIHR1cGxlID0gdHVwbGVzLmZpbHRlcihtYXRjaFR1cGxlKHBsYXRmb3JtLCBhcmNoKSkuc29ydChjb21wYXJlVHVwbGVzKVswXVxuICAgIGlmICghdHVwbGUpIHJldHVyblxuXG4gICAgLy8gRmluZCBtb3N0IHNwZWNpZmljIGZsYXZvciBmaXJzdFxuICAgIHZhciBwcmVidWlsZHMgPSBwYXRoLmpvaW4oZGlyLCAncHJlYnVpbGRzJywgdHVwbGUubmFtZSlcbiAgICB2YXIgcGFyc2VkID0gcmVhZGRpclN5bmMocHJlYnVpbGRzKS5tYXAocGFyc2VUYWdzKVxuICAgIHZhciBjYW5kaWRhdGVzID0gcGFyc2VkLmZpbHRlcihtYXRjaFRhZ3MocnVudGltZSwgYWJpKSlcbiAgICB2YXIgd2lubmVyID0gY2FuZGlkYXRlcy5zb3J0KGNvbXBhcmVUYWdzKHJ1bnRpbWUpKVswXVxuICAgIGlmICh3aW5uZXIpIHJldHVybiBwYXRoLmpvaW4ocHJlYnVpbGRzLCB3aW5uZXIuZmlsZSlcbiAgfVxufVxuXG5mdW5jdGlvbiByZWFkZGlyU3luYyAoZGlyKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGZzLnJlYWRkaXJTeW5jKGRpcilcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0Rmlyc3QgKGRpciwgZmlsdGVyKSB7XG4gIHZhciBmaWxlcyA9IHJlYWRkaXJTeW5jKGRpcikuZmlsdGVyKGZpbHRlcilcbiAgcmV0dXJuIGZpbGVzWzBdICYmIHBhdGguam9pbihkaXIsIGZpbGVzWzBdKVxufVxuXG5mdW5jdGlvbiBtYXRjaEJ1aWxkIChuYW1lKSB7XG4gIHJldHVybiAvXFwubm9kZSQvLnRlc3QobmFtZSlcbn1cblxuZnVuY3Rpb24gcGFyc2VUdXBsZSAobmFtZSkge1xuICAvLyBFeGFtcGxlOiBkYXJ3aW4teDY0K2FybTY0XG4gIHZhciBhcnIgPSBuYW1lLnNwbGl0KCctJylcbiAgaWYgKGFyci5sZW5ndGggIT09IDIpIHJldHVyblxuXG4gIHZhciBwbGF0Zm9ybSA9IGFyclswXVxuICB2YXIgYXJjaGl0ZWN0dXJlcyA9IGFyclsxXS5zcGxpdCgnKycpXG5cbiAgaWYgKCFwbGF0Zm9ybSkgcmV0dXJuXG4gIGlmICghYXJjaGl0ZWN0dXJlcy5sZW5ndGgpIHJldHVyblxuICBpZiAoIWFyY2hpdGVjdHVyZXMuZXZlcnkoQm9vbGVhbikpIHJldHVyblxuXG4gIHJldHVybiB7IG5hbWUsIHBsYXRmb3JtLCBhcmNoaXRlY3R1cmVzIH1cbn1cblxuZnVuY3Rpb24gbWF0Y2hUdXBsZSAocGxhdGZvcm0sIGFyY2gpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0dXBsZSkge1xuICAgIGlmICh0dXBsZSA9PSBudWxsKSByZXR1cm4gZmFsc2VcbiAgICBpZiAodHVwbGUucGxhdGZvcm0gIT09IHBsYXRmb3JtKSByZXR1cm4gZmFsc2VcbiAgICByZXR1cm4gdHVwbGUuYXJjaGl0ZWN0dXJlcy5pbmNsdWRlcyhhcmNoKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVUdXBsZXMgKGEsIGIpIHtcbiAgLy8gUHJlZmVyIHNpbmdsZS1hcmNoIHByZWJ1aWxkcyBvdmVyIG11bHRpLWFyY2hcbiAgcmV0dXJuIGEuYXJjaGl0ZWN0dXJlcy5sZW5ndGggLSBiLmFyY2hpdGVjdHVyZXMubGVuZ3RoXG59XG5cbmZ1bmN0aW9uIHBhcnNlVGFncyAoZmlsZSkge1xuICB2YXIgYXJyID0gZmlsZS5zcGxpdCgnLicpXG4gIHZhciBleHRlbnNpb24gPSBhcnIucG9wKClcbiAgdmFyIHRhZ3MgPSB7IGZpbGU6IGZpbGUsIHNwZWNpZmljaXR5OiAwIH1cblxuICBpZiAoZXh0ZW5zaW9uICE9PSAnbm9kZScpIHJldHVyblxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHRhZyA9IGFycltpXVxuXG4gICAgaWYgKHRhZyA9PT0gJ25vZGUnIHx8IHRhZyA9PT0gJ2VsZWN0cm9uJyB8fCB0YWcgPT09ICdub2RlLXdlYmtpdCcpIHtcbiAgICAgIHRhZ3MucnVudGltZSA9IHRhZ1xuICAgIH0gZWxzZSBpZiAodGFnID09PSAnbmFwaScpIHtcbiAgICAgIHRhZ3MubmFwaSA9IHRydWVcbiAgICB9IGVsc2UgaWYgKHRhZy5zbGljZSgwLCAzKSA9PT0gJ2FiaScpIHtcbiAgICAgIHRhZ3MuYWJpID0gdGFnLnNsaWNlKDMpXG4gICAgfSBlbHNlIGlmICh0YWcuc2xpY2UoMCwgMikgPT09ICd1dicpIHtcbiAgICAgIHRhZ3MudXYgPSB0YWcuc2xpY2UoMilcbiAgICB9IGVsc2UgaWYgKHRhZy5zbGljZSgwLCA0KSA9PT0gJ2FybXYnKSB7XG4gICAgICB0YWdzLmFybXYgPSB0YWcuc2xpY2UoNClcbiAgICB9IGVsc2UgaWYgKHRhZyA9PT0gJ2dsaWJjJyB8fCB0YWcgPT09ICdtdXNsJykge1xuICAgICAgdGFncy5saWJjID0gdGFnXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgdGFncy5zcGVjaWZpY2l0eSsrXG4gIH1cblxuICByZXR1cm4gdGFnc1xufVxuXG5mdW5jdGlvbiBtYXRjaFRhZ3MgKHJ1bnRpbWUsIGFiaSkge1xuICByZXR1cm4gZnVuY3Rpb24gKHRhZ3MpIHtcbiAgICBpZiAodGFncyA9PSBudWxsKSByZXR1cm4gZmFsc2VcbiAgICBpZiAodGFncy5ydW50aW1lICE9PSBydW50aW1lICYmICFydW50aW1lQWdub3N0aWModGFncykpIHJldHVybiBmYWxzZVxuICAgIGlmICh0YWdzLmFiaSAhPT0gYWJpICYmICF0YWdzLm5hcGkpIHJldHVybiBmYWxzZVxuICAgIGlmICh0YWdzLnV2ICYmIHRhZ3MudXYgIT09IHV2KSByZXR1cm4gZmFsc2VcbiAgICBpZiAodGFncy5hcm12ICYmIHRhZ3MuYXJtdiAhPT0gYXJtdikgcmV0dXJuIGZhbHNlXG4gICAgaWYgKHRhZ3MubGliYyAmJiB0YWdzLmxpYmMgIT09IGxpYmMpIHJldHVybiBmYWxzZVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxufVxuXG5mdW5jdGlvbiBydW50aW1lQWdub3N0aWMgKHRhZ3MpIHtcbiAgcmV0dXJuIHRhZ3MucnVudGltZSA9PT0gJ25vZGUnICYmIHRhZ3MubmFwaVxufVxuXG5mdW5jdGlvbiBjb21wYXJlVGFncyAocnVudGltZSkge1xuICAvLyBQcmVjZWRlbmNlOiBub24tYWdub3N0aWMgcnVudGltZSwgYWJpIG92ZXIgbmFwaSwgdGhlbiBieSBzcGVjaWZpY2l0eS5cbiAgcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgaWYgKGEucnVudGltZSAhPT0gYi5ydW50aW1lKSB7XG4gICAgICByZXR1cm4gYS5ydW50aW1lID09PSBydW50aW1lID8gLTEgOiAxXG4gICAgfSBlbHNlIGlmIChhLmFiaSAhPT0gYi5hYmkpIHtcbiAgICAgIHJldHVybiBhLmFiaSA/IC0xIDogMVxuICAgIH0gZWxzZSBpZiAoYS5zcGVjaWZpY2l0eSAhPT0gYi5zcGVjaWZpY2l0eSkge1xuICAgICAgcmV0dXJuIGEuc3BlY2lmaWNpdHkgPiBiLnNwZWNpZmljaXR5ID8gLTEgOiAxXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAwXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzTndqcyAoKSB7XG4gIHJldHVybiAhIShwcm9jZXNzLnZlcnNpb25zICYmIHByb2Nlc3MudmVyc2lvbnMubncpXG59XG5cbmZ1bmN0aW9uIGlzRWxlY3Ryb24gKCkge1xuICBpZiAocHJvY2Vzcy52ZXJzaW9ucyAmJiBwcm9jZXNzLnZlcnNpb25zLmVsZWN0cm9uKSByZXR1cm4gdHJ1ZVxuICBpZiAocHJvY2Vzcy5lbnYuRUxFQ1RST05fUlVOX0FTX05PREUpIHJldHVybiB0cnVlXG4gIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cucHJvY2VzcyAmJiB3aW5kb3cucHJvY2Vzcy50eXBlID09PSAncmVuZGVyZXInXG59XG5cbmZ1bmN0aW9uIGlzQWxwaW5lIChwbGF0Zm9ybSkge1xuICByZXR1cm4gcGxhdGZvcm0gPT09ICdsaW51eCcgJiYgZnMuZXhpc3RzU3luYygnL2V0Yy9hbHBpbmUtcmVsZWFzZScpXG59XG5cbi8vIEV4cG9zZWQgZm9yIHVuaXQgdGVzdHNcbi8vIFRPRE86IG1vdmUgdG8gbGliXG5sb2FkLnBhcnNlVGFncyA9IHBhcnNlVGFnc1xubG9hZC5tYXRjaFRhZ3MgPSBtYXRjaFRhZ3NcbmxvYWQuY29tcGFyZVRhZ3MgPSBjb21wYXJlVGFnc1xubG9hZC5wYXJzZVR1cGxlID0gcGFyc2VUdXBsZVxubG9hZC5tYXRjaFR1cGxlID0gbWF0Y2hUdXBsZVxubG9hZC5jb21wYXJlVHVwbGVzID0gY29tcGFyZVR1cGxlc1xuIl0sIm5hbWVzIjpbImZzIiwicmVxdWlyZSIsInBhdGgiLCJvcyIsInJ1bnRpbWVSZXF1aXJlIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIl9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fIiwidmFycyIsInByb2Nlc3MiLCJjb25maWciLCJ2YXJpYWJsZXMiLCJwcmVidWlsZHNPbmx5IiwiZW52IiwiUFJFQlVJTERTX09OTFkiLCJhYmkiLCJ2ZXJzaW9ucyIsIm1vZHVsZXMiLCJydW50aW1lIiwiaXNFbGVjdHJvbiIsImlzTndqcyIsImFyY2giLCJucG1fY29uZmlnX2FyY2giLCJwbGF0Zm9ybSIsIm5wbV9jb25maWdfcGxhdGZvcm0iLCJsaWJjIiwiTElCQyIsImlzQWxwaW5lIiwiYXJtdiIsIkFSTV9WRVJTSU9OIiwiYXJtX3ZlcnNpb24iLCJ1diIsInNwbGl0IiwibW9kdWxlIiwiZXhwb3J0cyIsImxvYWQiLCJkaXIiLCJyZXNvbHZlIiwibmFtZSIsImpvaW4iLCJ0b1VwcGVyQ2FzZSIsInJlcGxhY2UiLCJlcnIiLCJyZWxlYXNlIiwiZ2V0Rmlyc3QiLCJtYXRjaEJ1aWxkIiwiZGVidWciLCJwcmVidWlsZCIsIm5lYXJieSIsImRpcm5hbWUiLCJleGVjUGF0aCIsInRhcmdldCIsIm5vZGUiLCJlbGVjdHJvbiIsImZpbHRlciIsIkJvb2xlYW4iLCJFcnJvciIsInR1cGxlcyIsInJlYWRkaXJTeW5jIiwibWFwIiwicGFyc2VUdXBsZSIsInR1cGxlIiwibWF0Y2hUdXBsZSIsInNvcnQiLCJjb21wYXJlVHVwbGVzIiwicHJlYnVpbGRzIiwicGFyc2VkIiwicGFyc2VUYWdzIiwiY2FuZGlkYXRlcyIsIm1hdGNoVGFncyIsIndpbm5lciIsImNvbXBhcmVUYWdzIiwiZmlsZSIsImZpbGVzIiwidGVzdCIsImFyciIsImxlbmd0aCIsImFyY2hpdGVjdHVyZXMiLCJldmVyeSIsImluY2x1ZGVzIiwiYSIsImIiLCJleHRlbnNpb24iLCJwb3AiLCJ0YWdzIiwic3BlY2lmaWNpdHkiLCJpIiwidGFnIiwibmFwaSIsInNsaWNlIiwicnVudGltZUFnbm9zdGljIiwibnciLCJFTEVDVFJPTl9SVU5fQVNfTk9ERSIsIndpbmRvdyIsInR5cGUiLCJleGlzdHNTeW5jIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/node-gyp-build/node-gyp-build.js\n");

/***/ })

};
;

from node-gyp-build.

mafintosh avatar mafintosh commented on June 11, 2024

If you give me a command on how to repro that error/warning locally, I'm happy to iterate here also

from node-gyp-build.

bmackio avatar bmackio commented on June 11, 2024

@mafintosh, here's a repo @taychris created: https://github.com/taychris/nextjs-supabase

from node-gyp-build.

samducker avatar samducker commented on June 11, 2024

Any idea of how to surpress this warning in the meantime?

from node-gyp-build.

exceedxo avatar exceedxo commented on June 11, 2024

#62 (comment)

Thank you, this fixed my issues!

from node-gyp-build.

mafintosh avatar mafintosh commented on June 11, 2024

If anyone can repro please post here how after (you need to remove that .next cache mb, i had to)

from node-gyp-build.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.