const { spawn } = require('child_process');
const fs = require('fs');
const path = require('path');
const root = __dirname;
function createSpawn(command, next) {
const child = spawn(command, {
stdio: 'inherit',
shell: true,
cwd: root,
});
child.on('exit', function () {
if (typeof next === 'function') {
next();
}
});
}
function install() {
fs.rmSync(path.resolve(root, '.husky'), {
recursive: true,
force: true,
});
createSpawn('npx husky install', () => {
createSpawn('npx husky add .husky/pre-commit "npm run pre-commit"', () => {
createSpawn('npx husky add .husky/commit-msg "npx --no -- commitlint --edit #EE#"', () => {
const file = path.resolve(root, '.husky/commit-msg');
let content = fs.readFileSync(file).toString();
content = content.replace('#EE#', '"$1"');
fs.writeFileSync(file, content);
});
});
});
}
install();
I test on windows, and it work fine
I used the yarn command to install dependencies, but an error occurred. It was still good before. I suspect that the permissions of the husky file are incorrect, but an error is reported in the yarn script
but when i use the commnad node install.js it work fine!!!
here is the error
yarn install v1.22.19
[1/4] 🔍 Resolving packages...
success Already up-to-date.
$ node install.js
node:internal/fs/utils:344
throw err;
^
Error: ENOENT: no such file or directory, open '/Users/ao/Desktop/Yeastar/PPV3/ppfe/.husky/commit-msg'
at Object.openSync (node:fs:585:3)
at Object.readFileSync (node:fs:453:35)
at /Users/ao/Desktop/Yeastar/PPV3/ppfe/install.js:32:34
at ChildProcess.<anonymous> (/Users/ao/Desktop/Yeastar/PPV3/ppfe/install.js:17:13)
at ChildProcess.emit (node:events:526:28)
at Process.ChildProcess._handle.onexit (node:internal/child_process:291:12) {
errno: -2,
syscall: 'open',
code: 'ENOENT',
path: '/Users/ao/Desktop/Yeastar/PPV3/ppfe/.husky/commit-msg'
}
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
I have an application with a frontend that uses React and a backend that uses the Nodejs environment with the Express framework.
To communicate and store the data I use MongoDB.
I have been developing this application for a few weeks now and everything is working fine until today.
This morning again I developed and I could test everything, it responded well.
Since two hours when I write npm start in my terminal on vscode in the backend folder, I get an error while before my server was running fine. I want to specify that I made a 30min break between when I stopped coding this morning and when I started again this afternoon, I didn't change anything in the code in the meantime but the server doesn't start anymore. I also want to say that npm start in my frontend folder is still working fine.
Implementing mongo db in my backend code
db.js in models folder
const mongoose = require('mongoose');
mongoose.connect(process.env.MONGODB_URI, { useNewURLParser: true, useUnifiedTopology: true });
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error'));
db.once('open', function () {
console.log('Connected')
});
implementation of mongo in app.js of backend folder
var createError = require("http-errors");
var express = require("express");
var path = require("path");
var cookieParser = require("cookie-parser");
var bodyParser = require("body-parser");
var logger = require("morgan");
var cors = require("cors");
require('dotenv').config();
var whitelist = ['http://localhost:3000']
var corsOption = {
origin: function (origin, callback) {
if (whitelist.indexOf(origin) !== -1) {
callback(null, true)
} else {
callback(new Error('Not allowed by CORS'))
}
}
}
var getAPIRouter = require("./routes/apiRoutes.js");
var app = express();
app.set("views", path.join(__dirname, "views"));
app.set("view engine", "jade");
app.use(cors(corsOption));
app.use(logger("dev"));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cookieParser());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(express.static(path.join(__dirname, "public")));
app.use("/", getAPIRouter);
require('./routes/auth.routes')(app);
require('./routes/user.routes')(app);
const db = require("./models");
const Role = db.role;
db.mongoose
.connect(process.env.MONGODB_URI, {
useNewUrlParser: true,
useUnifiedTopology: true
})
.then(() => {
console.log("Successfully connect to MongoDB.");
initial();
})
.catch(err => {
console.error("Connection error", err);
process.exit();
});
//just for first time running
function initial() {
Role.estimatedDocumentCount((err, count) => {
if (!err && count === 0) {
new Role({
name: "user"
}).save(err => {
if (err) {
console.log("error", err);
}
console.log("added 'user' to roles collection");
});
new Role({
name: "moderator"
}).save(err => {
if (err) {
console.log("error", err);
}
console.log("added 'moderator' to roles collection");
});
new Role({
name: "admin"
}).save(err => {
if (err) {
console.log("error", err);
}
console.log("added 'admin' to roles collection");
});
}
});
}
app.use(function (req, res, next) {
next(createError(404));
});
app.use(function (err, req, res, next) {
res.locals.message = err.message;
res.locals.error = req.app.get("env") === "development" ? err : {};
res.status(err.status || 500);
res.render("error");
});
module.exports = app;
My error in the terminal
PS C:\Users\deyga\Documents\GitHub\PPE\backendPPE> npm start
> backendppe#0.0.0 start C:\Users\deyga\Documents\GitHub\PPE\backendPPE
> node ./bin/www
Successfully connect to MongoDB.
connection error MongooseServerSelectionError: Could not connect to any servers in your MongoDB Atlas cluster. One common reason is that you're trying to access the database from an IP that isn't whitelisted. Make sure your current IP address is on your
Atlas cluster's IP whitelist: https://docs.atlas.mongodb.com/security-whitelist/
at NativeConnection.Connection.openUri (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\connection.js:807:32)
at C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\index.js:340:10
at C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\helpers\promiseOrCallback.js:32:5
at new Promise (<anonymous>)
at promiseOrCallback (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\helpers\promiseOrCallback.js:31:10)
at Mongoose._promiseOrCallback (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\index.js:1174:10)
at Mongoose.connect (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\index.js:339:20)
at Object.<anonymous> (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\models\db.js:2:10)
at Module._compile (node:internal/modules/cjs/loader:1099:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10) {
reason: TopologyDescription {
type: 'ReplicaSetNoPrimary',
servers: Map(3) {
'cluster0-shard-00-00.0ynbf.mongodb.net:27017' => [ServerDescription],
'cluster0-shard-00-01.0ynbf.mongodb.net:27017' => [ServerDescription],
'cluster0-shard-00-02.0ynbf.mongodb.net:27017' => [ServerDescription]
},
stale: false,
compatible: true,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
setName: 'atlas-sujybn-shard-0',
logicalSessionTimeoutMinutes: undefined
}
}
node:internal/process/promises:279
triggerUncaughtException(err, true /* fromPromise */);
^
MongooseServerSelectionError: Could not connect to any servers in your MongoDB Atlas cluster. One common reason is that you're
trying to access the database from an IP that isn't whitelisted. Make sure your current IP address is on your Atlas cluster's IP whitelist: https://docs.atlas.mongodb.com/security-whitelist/
at NativeConnection.Connection.openUri (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\connection.js:807:32)
at C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\index.js:340:10
at C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\helpers\promiseOrCallback.js:32:5
at new Promise (<anonymous>)
at promiseOrCallback (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\helpers\promiseOrCallback.js:31:10)
at Mongoose._promiseOrCallback (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\index.js:1174:10)
at Mongoose.connect (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\index.js:339:20)
at Object.<anonymous> (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\models\db.js:2:10)
at Module._compile (node:internal/modules/cjs/loader:1099:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10) {
reason: TopologyDescription {
type: 'ReplicaSetNoPrimary',
servers: Map(3) {
'cluster0-shard-00-00.0ynbf.mongodb.net:27017' => ServerDescription {
_hostAddress: HostAddress {
isIPv6: false,
host: 'cluster0-shard-00-00.0ynbf.mongodb.net',
port: 27017
},
address: 'cluster0-shard-00-00.0ynbf.mongodb.net:27017',
type: 'Unknown',
hosts: [],
passives: [],
arbiters: [],
tags: {},
minWireVersion: 0,
maxWireVersion: 0,
roundTripTime: -1,
lastUpdateTime: 2826297,
lastWriteDate: 0,
error: MongoNetworkError: connect ETIMEDOUT 108.129.27.210:27017
at connectionFailureError (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongodb\lib\cmap\connect.js:381:20)
at TLSSocket.<anonymous> (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongodb\lib\cmap\connect.js:301:22)
at Object.onceWrapper (node:events:642:26)
at TLSSocket.emit (node:events:527:28)
at emitErrorNT (node:internal/streams/destroy:164:8)
at emitErrorCloseNT (node:internal/streams/destroy:129:3)
at processTicksAndRejections (node:internal/process/task_queues:83:21)
},
'cluster0-shard-00-01.0ynbf.mongodb.net:27017' => ServerDescription {
_hostAddress: HostAddress {
isIPv6: false,
host: 'cluster0-shard-00-01.0ynbf.mongodb.net',
port: 27017
},
address: 'cluster0-shard-00-01.0ynbf.mongodb.net:27017',
type: 'Unknown',
hosts: [],
passives: [],
arbiters: [],
tags: {},
minWireVersion: 0,
maxWireVersion: 0,
roundTripTime: -1,
lastUpdateTime: 2826308,
lastWriteDate: 0,
error: MongoNetworkError: connect ETIMEDOUT 52.212.197.12:27017
at connectionFailureError (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongodb\lib\cmap\connect.js:381:20)
at TLSSocket.<anonymous> (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongodb\lib\cmap\connect.js:301:22)
at Object.onceWrapper (node:events:642:26)
at TLSSocket.emit (node:events:527:28)
at emitErrorNT (node:internal/streams/destroy:164:8)
at emitErrorCloseNT (node:internal/streams/destroy:129:3)
at processTicksAndRejections (node:internal/process/task_queues:83:21)
},
'cluster0-shard-00-02.0ynbf.mongodb.net:27017' => ServerDescription {
_hostAddress: HostAddress {
isIPv6: false,
host: 'cluster0-shard-00-02.0ynbf.mongodb.net',
port: 27017
},
address: 'cluster0-shard-00-02.0ynbf.mongodb.net:27017',
type: 'Unknown',
hosts: [],
passives: [],
arbiters: [],
tags: {},
minWireVersion: 0,
maxWireVersion: 0,
roundTripTime: -1,
lastUpdateTime: 2826318,
lastWriteDate: 0,
error: MongoNetworkError: connect ETIMEDOUT 34.246.79.174:27017
at connectionFailureError (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongodb\lib\cmap\connect.js:381:20)
at TLSSocket.<anonymous> (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongodb\lib\cmap\connect.js:301:22)
at Object.onceWrapper (node:events:642:26)
at TLSSocket.emit (node:events:527:28)
at emitErrorNT (node:internal/streams/destroy:164:8)
at emitErrorCloseNT (node:internal/streams/destroy:129:3)
at processTicksAndRejections (node:internal/process/task_queues:83:21)
}
},
stale: false,
compatible: true,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
setName: 'atlas-sujybn-shard-0',
logicalSessionTimeoutMinutes: undefined
}
}
Node.js v17.7.2
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! backendppe#0.0.0 start: `node ./bin/www`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the backendppe#0.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\deyga\AppData\Roaming\npm-cache\_logs\2022-04-04T13_57_51_440Z-debug.log
Complete log of this run
0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli 'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli 'start'
1 verbose cli ]
2 info using npm#6.14.15
3 info using node#v14.18.0
4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info lifecycle backendppe#0.0.0~prestart: backendppe#0.0.0
6 info lifecycle backendppe#0.0.0~start: backendppe#0.0.0
7 verbose lifecycle backendppe#0.0.0~start: unsafe-perm in lifecycle true
8 verbose lifecycle backendppe#0.0.0~start: PATH: C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin;C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\.bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files\Common Files\Oracle\Java\javapath;C:\ProgramData\Oracle\Java\javapath;C:\Python310\Scripts\;C:\Python310\;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files\Git\cmd;C:\Program Files\nodejs\;C:\ProgramData\chocolatey\bin;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Android\android-sdk\platform-tools;C:\Windows\System32\;C:\Users\deyga\AppData\Local\Microsoft\WindowsApps;C:\Users\deyga\AppData\Local\GitHubDesktop\bin;C:\Users\deyga\AppData\Local\Microsoft\WindowsApps;C:\texlive\2020\bin\win32;C:\Users\deyga\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\deyga\AppData\Roaming\npm;C:\Program Files\heroku\bin;C:\Users\deyga\Documents\GitHub\PROJECT_WEB_OCRES;
9 verbose lifecycle backendppe#0.0.0~start: CWD: C:\Users\deyga\Documents\GitHub\PPE\backendPPE
10 silly lifecycle backendppe#0.0.0~start: Args: [ '/d /s /c', 'node ./bin/www' ]
11 silly lifecycle backendppe#0.0.0~start: Returned: code: 1 signal: null
12 info lifecycle backendppe#0.0.0~start: Failed to exec start script
13 verbose stack Error: backendppe#0.0.0 start: `node ./bin/www`
13 verbose stack Exit status 1
13 verbose stack at EventEmitter.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\index.js:332:16)
13 verbose stack at EventEmitter.emit (events.js:400:28)
13 verbose stack at ChildProcess.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\lib\spawn.js:55:14)
13 verbose stack at ChildProcess.emit (events.js:400:28)
13 verbose stack at maybeClose (internal/child_process.js:1058:16)
13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:293:5)
14 verbose pkgid backendppe#0.0.0
15 verbose cwd C:\Users\deyga\Documents\GitHub\PPE\backendPPE
16 verbose Windows_NT 10.0.19043
17 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "start"
18 verbose node v14.18.0
19 verbose npm v6.14.15
20 error code ELIFECYCLE
21 error errno 1
22 error backendppe#0.0.0 start: `node ./bin/www`
22 error Exit status 1
23 error Failed at the backendppe#0.0.0 start script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]
Message returned in the backend site when I try to access its route: "http://localhost:5000/api/forums"
Not allowed by CORS
Error: Not allowed by CORS
at origin (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\app.js:21:16)
at C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\cors\lib\index.js:219:13
at optionsCallback (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\cors\lib\index.js:199:9)
at corsMiddleware (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\cors\lib\index.js:204:7)
at Layer.handle [as handle_request] (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\express\lib\router\index.js:323:13)
at C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\express\lib\router\index.js:284:7
at Function.process_params (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\express\lib\router\index.js:341:12)
at next (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\express\lib\router\index.js:275:10)
at expressInit (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\express\lib\middleware\init.js:40:5)
I use two different ports for my backend server (port 5000) and the frontend (port 3000).
I tried to delete node module in my backend folder and then redo an npm install but it didn't change anything. I also tried to upgrade my npm without result either. I also tried to recover my ip address on https://www.whatismyip.com/ to add it in network access in MongoDB but it did not solve my problem either.
MongoDB Network Access settings
I tried to put as much information as possible about the error but if you find any missing let me know and I will try to add it as soon as possible.
I found several people with the same problem as me on the forums but no solution worked for me, if you could help me it would save me :)
I am trying to use https://www.npmjs.com/package/passbook to generate iOS passbook using lambda. The package has the following snippet to sign the manifest:
var sign = execFile("openssl", args, { stdio: "pipe" }, function(error, stdout, stderr) {
var trimmedStderr = stderr.trim();
// Windows outputs some unhelpful error messages, but still produces a valid signature
if (error || (trimmedStderr && trimmedStderr.indexOf('- done') < 0)) {
callback(new Error(error || stderr));
} else {
var signature = stdout.split(/\n\n/)[3];
callback(null, new Buffer(signature, "base64"));
}
});
But when I executed it on AWS Lambda (NodeJs 10), I got the following error:
Error: spawn openssl ENOENT
at /var/task/node_modules/passbook/lib/pass.js:361:16
at exithandler (child_process.js:301:5)
at ChildProcess.errorhandler (child_process.js:313:5)
at ChildProcess.emit (events.js:189:13)
at ChildProcess.EventEmitter.emit (domain.js:441:20)
at Process.ChildProcess._handle.onexit (internal/child_process.js:246:12)
at onErrorNT (internal/child_process.js:415:16)
at process._tickCallback (internal/process/next_tick.js:63:19)
I am thinking the AMI image used does not have openssl installed. Does anyone know if openssl installed and where it is located?
I'm currently trying to deploy a music visualizer that I built. It works in all scenarios except when I click on a song to play from the search bar. I keep on getting '503 (Service Unavailable)'. Does anyone know what's up with my code? I've spent the past 6 hours on SO trying to find the answer, but I've come up with nothing.
Here are my Heroku logs:
2018-08-10T01:47:00.757554+00:00 app[web.1]: events.js:183
2018-08-10T01:47:00.757570+00:00 app[web.1]: throw er; // Unhandled 'error' event
2018-08-10T01:47:00.757572+00:00 app[web.1]: ^
2018-08-10T01:47:00.757573+00:00 app[web.1]:
2018-08-10T01:47:00.757574+00:00 app[web.1]: TypeError: Invalid non-string/buffer chunk
2018-08-10T01:47:00.757576+00:00 app[web.1]: at validChunk (_stream_writable.js:254:10)
2018-08-10T01:47:00.757577+00:00 app[web.1]: at PassThrough.Writable.write (_stream_writable.js:288:21)
2018-08-10T01:47:00.757578+00:00 app[web.1]: at PassThrough.Writable.end (_stream_writable.js:563:10)
2018-08-10T01:47:00.757581+00:00 app[web.1]: at emitThree (events.js:141:20)
2018-08-10T01:47:00.757582+00:00 app[web.1]: at DestroyableTransform.emit (events.js:217:7)
2018-08-10T01:47:00.757583+00:00 app[web.1]: at emitThree (events.js:136:13)
2018-08-10T01:47:00.757585+00:00 app[web.1]: at FfmpegCommand.emit (events.js:217:7)
2018-08-10T01:47:00.757586+00:00 app[web.1]: at emitEnd (/app/node_modules/fluent-ffmpeg/lib/processor.js:424:16)
2018-08-10T01:47:00.757588+00:00 app[web.1]: at /app/node_modules/fluent-ffmpeg/lib/processor.js:433:16
2018-08-10T01:47:00.757589+00:00 app[web.1]: at /app/node_modules/async/dist/async.js:473:16
2018-08-10T01:47:00.765330+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2018-08-10T01:47:00.765674+00:00 app[web.1]: npm ERR! errno 1
2018-08-10T01:47:00.766812+00:00 app[web.1]: npm ERR! yuen#1.0.0 start: `node server.js`
2018-08-10T01:47:00.766955+00:00 app[web.1]: npm ERR! Exit status 1
2018-08-10T01:47:00.767136+00:00 app[web.1]: npm ERR!
2018-08-10T01:47:00.767256+00:00 app[web.1]: npm ERR! Failed at the yuen#1.0.0 start script.
2018-08-10T01:47:00.767393+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2018-08-10T01:47:00.771128+00:00 app[web.1]:
2018-08-10T01:47:00.771274+00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2018-08-10T01:47:00.771356+00:00 app[web.1]: npm ERR! /app/.npm/_logs/2018-08-10T01_47_00_768Z-debug.log
Here is the source code for my Express app (server.js):
var express = require('express');
var youtubeStream = require('youtube-audio-stream');
var app = express();
app.use(express.static(__dirname));
app.get('/', function (req, res) {
res.sendFile(path.join(__dirname + '/index.html'));
});
app.get('/stream/:videoId', function (req, res) {
try {
youtubeStream(req.params.videoId).pipe(res);
} catch (exception) {
res.status(500).send(exception);
}
});
app.listen(process.env.PORT || 3000, function () {
console.log('app is listening on port 3000!');
});
Here is the code that actually interacts with the server by sending xhr requests:
function loadSound(vidID) {
context.close()
.then(() => {
context = new AudioContext();
analyser = context.createAnalyser();
analyser.fftSize = 32;
})
.then(() => {
var request = new XMLHttpRequest();
request.open("GET", window.location.href+"stream/"+vidID, true);
request.responseType = "arraybuffer";
request.onload = function() {
var Data = request.response;
process(Data);
};
request.send();
});
}
function process(Data) {
source = context.createBufferSource();
context.decodeAudioData(Data, function(buffer){
source.buffer = buffer;
source.connect(context.destination);
source.connect(analyser);
source.start(context.currentTime);
});
document.getElementById('searchBar').disabled = false;
loading(true);
}
And lastly, here are the listed dependencies in my package.json file:
"dependencies": {
"express": "^4.16.3",
"ffmpeg": "0.0.4",
"fluent-ffmpeg": "^2.1.2",
"through2": "^2.0.3",
"xtend": "^4.0.1",
"youtube-audio-stream": "https://github.com/cryptagoras/youtube-audio-stream/archive/patch-3.tar.gz",
"ytdl-core": "^0.24.0"
}
I found the answer: I didn't actually have any of the encoding libraries installed on Heroku. I simply added ffmpeg into my .buildpacks, and now everything works like a charm!
I try to deploy nuxt project using the latest version of Nuxt which is nuxt-edge to firebase. This is my function code.
const { Nuxt } = require('nuxt-edge')
const express = require('express')
const functions = require('firebase-functions')
const app = express()
const config = {
dev: false,
buildDir: 'nuxt',
build: {
extractCSS: true,
cache: false,
parallel: true,
publicPath: '/assets/'
}
}
const nuxt = new Nuxt(config)
const handleRequest = (req, res) => {
return new Promise((resolve, reject) => {
nuxt.render(req, res, promise => {
promise.then(resolve).catch(reject)
})
})
}
app.use(handleRequest)
exports.jefrydcossr = functions.https.onRequest(app)
It successfully run locally with firebase serve --only hosting,function command. But when I deployed it online and I open the hosting url, I got server error 500.
After I looked at the error log, I got error like this
2018-06-14T12:43:26.094Z D jefrydcossr: Code in file index.js can't be loaded.
Is there a syntax error in your code?
Detailed stack trace: Error: only one instance of babel-polyfill is allowed
at Object.<anonymous> (/user_code/node_modules/nuxt-edge/node_modules/babel-polyfill/lib/index.js:10:9)
at Module._compile (module.js:577:32)
at Object.Module._extensions..js (module.js:586:10)
at Module.load (module.js:494:32)
at tryModuleLoad (module.js:453:12)
at Function.Module._load (module.js:445:3)
at Module.require (module.js:504:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/user_code/node_modules/nuxt-edge/dist/nuxt-legacy.js:50:1)
at Module._compile (module.js:577:32)
at Object.Module._extensions..js (module.js:586:10)
at Module.load (module.js:494:32)
at tryModuleLoad (module.js:453:12)
at Function.Module._load (module.js:445:3)
at Module.require (module.js:504:17)
at require (internal/module.js:20:19)
2018-06-14T12:43:26.206Z E jefrydcossr: undefined
2018-06-14T12:51:04.440Z N jefrydcossr: undefined
2018-06-14T12:53:28.052Z N jefrydcossr: undefined
The repository of this project here https://github.com/jefrydco/jefrydco-id