I realize this is a long shot ("help me debug my server!") but I'm kind of at wit's ends.
I'm using handlebars as a dependency in an Atomist rug project, which behind the scene relies on nashorn-commonjs-modules 1.0.8. Everything works fine locally (tested on Debian and MacOS) but one require fails for a library when the same code is run on a CI server. I've also tried running the build locally using the same Docker image used by CI and can't reproduce the issue. At this point, I'm thinking the only difference would be in the environment passed to the Docker container (NPM config, networking...) because otherwise everything else is the same (same Java version, same libraries...).
Anyhow, enough ado, here is the stack I am getting:
Caused by: .atomist/node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js:16 Error: Module not found: ./code-gen
at com.coveo.nashorn_modules.Module.throwModuleNotFoundException(Module.java:365)
at com.coveo.nashorn_modules.Module.require(Module.java:126)
at jdk.nashorn.internal.scripts.Script$Recompilation$260$60AAAAA$javascript_compiler$cu1$restOf.L:1(.atomist/node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js:16)
at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:647)
at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)
at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
at jdk.nashorn.api.scripting.ScriptObjectMirror.call(ScriptObjectMirror.java:117)
at com.coveo.nashorn_modules.Module.compileJavaScriptModule(Module.java:334)
at com.coveo.nashorn_modules.Module.compileModuleAndPutInCache(Module.java:288)
at com.coveo.nashorn_modules.Module.loadModuleAsFile(Module.java:202)
at com.coveo.nashorn_modules.Module.attemptToLoadFromThisFolder(Module.java:177)
at com.coveo.nashorn_modules.Module.require(Module.java:116)
at jdk.nashorn.internal.scripts.Script$Recompilation$252$60AAAAA$handlebars$cu1$restOf.L:1(.atomist/node_modules/handlebars/dist/cjs/handlebars.js:22)
at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:667)
at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)
at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
at jdk.nashorn.api.scripting.ScriptObjectMirror.call(ScriptObjectMirror.java:117)
at com.coveo.nashorn_modules.Module.compileJavaScriptModule(Module.java:334)
at com.coveo.nashorn_modules.Module.compileModuleAndPutInCache(Module.java:288)
at com.coveo.nashorn_modules.Module.loadModuleAsFile(Module.java:202)
at com.coveo.nashorn_modules.Module.attemptToLoadFromThisFolder(Module.java:177)
at com.coveo.nashorn_modules.Module.require(Module.java:116)
at jdk.nashorn.internal.scripts.Script$Recompilation$30$60AAAAA$index.:scopeCall(.atomist/node_modules/handlebars/lib/index.js)
at jdk.nashorn.internal.scripts.Script$Recompilation$30$60AAAAA$index.L:1(.atomist/node_modules/handlebars/lib/index.js:7)
at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:667)
at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)
at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
at jdk.nashorn.api.scripting.ScriptObjectMirror.call(ScriptObjectMirror.java:117)
at com.coveo.nashorn_modules.Module.compileJavaScriptModule(Module.java:334)
at com.coveo.nashorn_modules.Module.compileModuleAndPutInCache(Module.java:288)
at com.coveo.nashorn_modules.Module.loadModuleAsFile(Module.java:202)
at com.coveo.nashorn_modules.Module.loadModuleThroughPackageJson(Module.java:247)
at com.coveo.nashorn_modules.Module.loadModuleAsFolder(Module.java:215)
at com.coveo.nashorn_modules.Module.attemptToLoadFromThisFolder(Module.java:181)
at com.coveo.nashorn_modules.Module.searchForModuleInNodeModules(Module.java:150)
at com.coveo.nashorn_modules.Module.require(Module.java:122)
at jdk.nashorn.internal.scripts.Script$Recompilation$25$Common$cu1$restOf.L:1(.atomist/editors/Common.js:5)
at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:628)
at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)
at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
at jdk.nashorn.api.scripting.ScriptObjectMirror.call(ScriptObjectMirror.java:117)
at com.coveo.nashorn_modules.Module.compileJavaScriptModule(Module.java:334)
at com.coveo.nashorn_modules.Module.compileModuleAndPutInCache(Module.java:288)
at com.coveo.nashorn_modules.Module.loadModuleAsFile(Module.java:202)
at com.coveo.nashorn_modules.Module.attemptToLoadFromThisFolder(Module.java:177)
at com.coveo.nashorn_modules.Module.require(Module.java:116)
at jdk.nashorn.internal.scripts.Script$Recompilation$7$Common.:program(.atomist/editors/Common.js:1)
at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:637)
at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)
at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:449)
And here is the beginning of javascript-compiler.js where the failing require('./code-gen') is located. Note that requires above it work fine. And yes, code-gen.js is in the same dir as javascript-compiler.js.
'use strict';
exports.__esModule = true;
// istanbul ignore next
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _base = require('../base');
var _exception = require('../exception');
var _exception2 = _interopRequireDefault(_exception);
var _utils = require('../utils');
var _codeGen = require('./code-gen');
var _codeGen2 = _interopRequireDefault(_codeGen);
Is this familiar by any chance? What type of environment change could influence this? How could I debug this, knowing that I can't attach a remote debugger to the JVM.
Any pointer/advice/hope would be very appreciated 😄
I realize this is a long shot ("help me debug my server!") but I'm kind of at wit's ends.
I'm using
handlebars
as a dependency in anAtomist rug
project, which behind the scene relies onnashorn-commonjs-modules 1.0.8
. Everything works fine locally (tested on Debian and MacOS) but onerequire
fails for a library when the same code is run on a CI server. I've also tried running the build locally using the same Docker image used by CI and can't reproduce the issue. At this point, I'm thinking the only difference would be in the environment passed to the Docker container (NPM config, networking...) because otherwise everything else is the same (same Java version, same libraries...).Anyhow, enough ado, here is the stack I am getting:
And here is the beginning of
javascript-compiler.js
where the failingrequire('./code-gen')
is located. Note thatrequire
s above it work fine. And yes,code-gen.js
is in the same dir asjavascript-compiler.js
.Is this familiar by any chance? What type of environment change could influence this? How could I debug this, knowing that I can't attach a remote debugger to the JVM.
Any pointer/advice/hope would be very appreciated 😄