Comments (17)
@samducker You can pin to node-gyp-build
4.6.1, which doesn't have this issue.
from node-gyp-build.
Fixed in 4.7.1
from node-gyp-build.
The error comes from webpack: https://github.com/webpack/webpack/blob/87660921808566ef3b8796f8df61bd79fc026108/lib/dependencies/CommonJsImportsParserPlugin.js#L216
from node-gyp-build.
cc @kasperisager @mafintosh because you added require.addon
in #61. What platform is that for?
from node-gyp-build.
@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.
Would something like this work?
node-gyp-build/node-gyp-build.js
Lines 5 to 6 in 2f0695e
from node-gyp-build.
We can try for sure
from node-gyp-build.
Can someone verify if this fixes the issue: #63
from node-gyp-build.
@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.
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.
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.
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.
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.
@mafintosh, here's a repo @taychris created: https://github.com/taychris/nextjs-supabase
from node-gyp-build.
Any idea of how to surpress this warning in the meantime?
from node-gyp-build.
Thank you, this fixed my issues!
from node-gyp-build.
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)
- The loading algorithm doesn't work for Webpack-bundled applications when dependencies are bundled into them. HOT 17
- Optional exit with 0 if build fail? HOT 3
- require in node-gyp-build-test causes prebuild detection to fail HOT 3
- documentation missing for multiple features HOT 2
- getting error node-gyp-build HOT 7
- Understanding if prebuilds are being used or not HOT 3
- Cross platform prebuild HOT 4
- question: is node-gyp required as a dependency? HOT 4
- "No native build was found" during `yarn install --verbose` is disconcerting HOT 4
- Add support for node-webkit runtime HOT 1
- Load from generated metadata
- Failure to find prebuild on Linux 5.11.0-1022-aws HOT 1
- Error: No native build was found HOT 1
- "No native build was found" for `node-gyp-build` when bundling with `esbuild` HOT 3
- Report more information when a prebuild is not found HOT 6
- npm ERR! command sh -c node-gyp-build - Error While Installing Hardhat HOT 1
- Building fails on node v20 when using yarn HOT 5
- npm workspaces path issues
- Next.js does not bring over prebuilds folder into .next/server: "No native build was found for ..." HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from node-gyp-build.