From 13d6fc4a27c9bc881d63168fc8fe5b6411626124 Mon Sep 17 00:00:00 2001 From: Etienne Rossignon Date: Tue, 1 Jun 2021 08:27:21 +0200 Subject: [PATCH] fix issue #1192 --- prelude/bootstrap.js | 2 +- test/test-1192/.gitignore | 1 + test/test-1192/main.js | 65 +++++++++++++++++++++++++++ test/test-1192/package.json | 24 ++++++++++ test/test-1192/public/views/index.pug | 8 ++++ test/test-1192/src/index.js | 47 +++++++++++++++++++ 6 files changed, 146 insertions(+), 1 deletion(-) create mode 100644 test/test-1192/.gitignore create mode 100644 test/test-1192/main.js create mode 100644 test/test-1192/package.json create mode 100644 test/test-1192/public/views/index.pug create mode 100644 test/test-1192/src/index.js diff --git a/prelude/bootstrap.js b/prelude/bootstrap.js index 37bdb3826..9a2df233f 100644 --- a/prelude/bootstrap.js +++ b/prelude/bootstrap.js @@ -483,7 +483,7 @@ function payloadFileSync(pointer) { (() => { process.pkg.path = {}; - process.pkg.path.resolve = () => { + process.pkg.path.resolve = function resolve() { const args = cloneArgs(arguments); args.unshift(path.dirname(ENTRYPOINT)); return path.resolve.apply(path, args); // eslint-disable-line prefer-spread diff --git a/test/test-1192/.gitignore b/test/test-1192/.gitignore new file mode 100644 index 000000000..849ddff3b --- /dev/null +++ b/test/test-1192/.gitignore @@ -0,0 +1 @@ +dist/ diff --git a/test/test-1192/main.js b/test/test-1192/main.js new file mode 100644 index 000000000..2c1756dbe --- /dev/null +++ b/test/test-1192/main.js @@ -0,0 +1,65 @@ +#!/usr/bin/env node + +'use strict'; + +const path = require('path'); +const assert = require('assert'); +const utils = require('../utils.js'); + +assert(!module.parent); +assert(__dirname === process.cwd()); + +/* eslint-disable no-unused-vars */ +const target = process.argv[2] || 'host'; +const ext = process.platform === 'win32' ? '.exe' : ''; +const cmd = process.platform === 'win32' ? '.cmd' : ''; +const output = './output' + ext; +const input = './package.json'; + +// remove any possible left-over +utils.vacuum.sync('./node_modules'); + +const version = utils.exec.sync('node --version'); +console.log('node version = ', version); + +// launch `npm install` +const npmlog = utils.exec.sync('npm' + cmd + ' install'); +// console.log('npm log :', npmlog); + +utils.pkg.sync(['--target', target, '--output', output, input], { + expect: 0, +}); + +// ----------------------------------------------------------------------- +// Execute programm outside pjg +const logRef = utils.spawn.sync( + 'node', + [path.join(__dirname, 'src/index.js')], + { + cwd: __dirname, + expect: 0, + stdio: ['inherit', 'pipe', 'pipe'], + } +); + +const log = utils.spawn.sync(path.join(__dirname, output), [], { + cwd: __dirname, + expect: 0, + stdio: ['inherit', 'pipe', 'pipe'], +}); + +if (logRef.stdout !== log.stdout) { + console.log('expecting', logRef.stdout); + console.log('but got =', log.stdout); + process.exit(1); +} +if (logRef.stderr !== log.stderr) { + console.log('expecting', logRef.stderr); + console.log('but got =', log.stderr); + process.exit(1); +} + +utils.vacuum.sync(output); +utils.vacuum.sync('node_modules'); +utils.vacuum.sync('package-lock.json'); +console.log('Done'); diff --git a/test/test-1192/package.json b/test/test-1192/package.json new file mode 100644 index 000000000..6f8c74a8f --- /dev/null +++ b/test/test-1192/package.json @@ -0,0 +1,24 @@ +{ + "name": "pkg-express", + "version": "1.0.0", + "description": "Illustrates issue between pkg 5.2.X and express (works with with pkg pre 5.2.X).", + "repository": "", + "main": "src/index.js", + "bin": "src/index.js", + "license": "MIT", + "scripts": { + "postinstall": "npm run make", + "start": "node .", + "make": "pkg . -o ./dist/pkg-express.exe" + }, + "dependencies": { + "express": "^4.17.1", + "pug": "^3.0.2" + }, + "devDependencies": { + "pkg": "5.2.1" + }, + "pkg": { + "assets": "./public/views/*.pug" + } +} diff --git a/test/test-1192/public/views/index.pug b/test/test-1192/public/views/index.pug new file mode 100644 index 000000000..843b9e845 --- /dev/null +++ b/test/test-1192/public/views/index.pug @@ -0,0 +1,8 @@ + +html + head + title Hello World! + body + p Hello World! + + \ No newline at end of file diff --git a/test/test-1192/src/index.js b/test/test-1192/src/index.js new file mode 100644 index 000000000..e6d0775b0 --- /dev/null +++ b/test/test-1192/src/index.js @@ -0,0 +1,47 @@ +'use strict'; + +const http = require('http'); +const path = require('path'); +const express = require('express'); + +// Express app +const app = express(); +// Express views +app.set('views', path.join(__dirname, '../public/views')); +// Use pug as Express view engine +app.set('view engine', 'pug'); +// Match all routes +app.use('*', (_req, res) => { + res.render('index.pug'); +}); + +// Start HTTP server +const listener = http.createServer(app).listen(8080, () => { + console.info('Server started, listening on %d', listener.address().port); +}); + +// ------------------ now query he server +(async () => { + const options = { + hostname: '127.0.0.1', + path: '/', + method: 'GET', + port: 8080, + }; + + const req = http.request(options, (res) => { + console.log(`statusCode: ${res.statusCode}`); + res.on('data', (d) => { + process.stdout.write(d); + }); + }); + + req.on('error', (error) => { + console.error(error); + process.exit(1); + }); + req.on('close', () => { + process.exit(0); + }); + req.end(); +})();