I install my script like this:
sudo node scripts/installServer.js
with
const path = require('path');
const Service = require('node-mac').Service; // require('./node-mac-windows-linux')
const scriptsFolder = path.join(path.dirname(__filename));
const scriptPath = path.join(scriptsFolder, 'startAndWatchNodeJSWiki.js');
const service = new Service({
name: 'TiddlyWiki',
description: 'Local TiddlyWiki server for my knowledge management.',
script: scriptPath,
});
service.on('install', () => {
service.start();
console.log(`${scriptPath} started.`)
});
service.on('alreadyinstalled', () => {
console.log(`${scriptPath} already installed.`)
});
service.on('invalidinstallation', () => {
console.log(`${scriptPath} is invalid.`)
});
service.on('uninstall', () => {
console.log(`${scriptPath} is uninstalled.`)
});
service.on('error', () => {
console.log(`${scriptPath} errors.`)
});
service.install();
and
/// node-mac-windows-linux.js
const path = require('path');
const os = require('os');
const execSync = require('child_process').execSync;
const { existsSync } = require('fs');
let Service;
if (os.platform() === 'darwin') {
Service = require('node-mac').Service;
if (!existsSync('/Library/Logs/TiddlyWiki')) {
execSync('sudo mkdir -p /Library/Logs/TiddlyWiki && sudo chown -R $(whoami) /Library/Logs/TiddlyWiki');
}
} else if (os.platform() === 'win32') {
Service = require('node-windows').Service;
} else {
Service = require('node-linux').Service;
}
module.exports = Service;
I got:
# TiddlyWiki Errorsinternal/fs/utils.js:230
throw err;
^
Error: EPERM: operation not permitted, open '/xxx/node_modules/node-mac/lib/wrapper.js'
at Object.openSync (fs.js:462:3)
at Object.readFileSync (fs.js:364:35)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1166:22)
at Module.load (internal/modules/cjs/loader.js:996:32)
at Function.Module._load (internal/modules/cjs/loader.js:896:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47 {
errno: -1,
syscall: 'open',
code: 'EPERM',
path: '/xxx/node_modules/node-mac/lib/wrapper.js'
}
internal/fs/utils.js:230
throw err;
^
Error: EPERM: operation not permitted, open '/xxx/node_modules/node-mac/lib/wrapper.js'
at Object.openSync (fs.js:462:3)
at Object.readFileSync (fs.js:364:35)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1166:22)
at Module.load (internal/modules/cjs/loader.js:996:32)
at Function.Module._load (internal/modules/cjs/loader.js:896:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47 {
errno: -1,
syscall: 'open',
code: 'EPERM',
path: '/xxx/node_modules/node-mac/lib/wrapper.js'
}
I install my script like this:
with
and
I got: