You can set the templates directory to anything in plugin.json, I think it defaults to just templates if you don't specify.
Them you match the path from views, so it would be templates/emails where you put them.
Hey!
I want to read out a file inside my plugin:
const fs = require("fs");
const config = JSON.parse(fs.readFileSync("./utils/config.json", "utf-8"));
My Folder-Structure looks like this:
[email protected]:~/nodebb-linked-modules/nodebb-plugin-sync-bot$ ls
lib library.js node_modules package.json plugin.json static utils
Inside of utils
is the file config.json
which I have to read via the fs.
const config = JSON.parse(fs.readFileSync("./utils/config.json", "utf-8"));
On startup I receive the following error:
error: Error: ENOENT: no such file or directory, open './utils/config.json'
How can I import files in the same directory to work with it?
I checked the file permissions. They are identical.
Looking forwar to your answers.
@pitaj Many thanks for your effort
Okay so I just npm link
'ed my plugin again so I thought some file will be updated. But they weren't.
Here is my full source code of libary.js
:
'use strict';
/* NodeBB Basic Plugin Libraries */
const controllers = require('./lib/controllers');
const plugin = {};
/* Third Party Libraries */
const Discord = require("discord.js");
const fs = require("fs");
// Nodebb Discord Bot
const config = JSON.parse(fs.readFileSync("./utils/config.json", "utf-8"));
var client = new Discord.Client();
let debug = true;
plugin.init = function (params, callback, client) {
myDebug("nodebb-discord-bot-started");
callback();
};
function myDebug(msg){
if(debug){
console.log(msg);
}
}
module.exports = plugin;
2021-01-12T10:46:19.318Z [4567/4689] - error: Error: ENOENT: no such file or directory, open './utils/config.json'
at Object.openSync (fs.js:462:3)
at Object.readFileSync (fs.js:364:35)
at Object.<anonymous> (/home/ubuntu/nodebb-linked-modules/nodebb-plugin-makesmart-discord-bot/library.js:15:30)
at Module._compile (internal/modules/cjs/loader.js:999:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object.Plugins.requireLibrary (/home/ubuntu/nodebb/src/plugins/index.js:70:39)
I tried it with path
again:
// Nodebb Discord Bot
var configpath = path.join(__dirname, 'utils', 'config.json');
const config = JSON.parse(fs.readFileSync(configpath, "utf-8"));
var client = new Discord.Client();
an suddenly ... it worked! o.O
2021-01-12T10:51:15.711Z [4567/4765] - info: [api] Adding 2 route(s) to `api/v3/plugins`
2021-01-12T10:51:15.889Z [4567/4765] - info: Routes added
2021-01-12T10:51:15.933Z [4567/4765] - info: NodeBB Ready
2021-01-12T10:51:15.943Z [4567/4765] - info: Enabling 'trust proxy'
2021-01-12T10:51:15.972Z [4567/4765] - info: NodeBB is now listening on: 0.0.0.0:4567
I think it was really because I ran npm link again. Funny.* I'm sorry. Most of the time, the problem is in front of the computer.
But still a strange behavior in my opinion. Well ... Good to know for the future. @PitaJ as mentioned thank you for you effort.
For any others having the same issue:
npm link
in ./nodebb
again to refresh something in the plugin folder ...I dont know tbh ... @pitaj My folder with the config.json
is in the same directory as library.js
is. I tried it with path
but it didn't work either.
my-plugin
├── library.js
└── utlis
└── config.json
var configpath = path.join(__dirname, 'utils', 'config.json');
Results also in:
error: Error: ENOENT: no such file or directory, open './utils/config.json'
What can I do to get it work? Any other suggestions or tips? Would be awesome!
@dogs what you have should work. Are you sure you're using configpath inside the readfilesync?
@dogs no please don't open an issue for this. This is certainly not a problem with NodeBB. In fact this is a basic Node.js programming issue
Please share the full source of library.js
The reason I know there's something wrong with your code is that the error mentions ./utils/config.json
, but if the correct path with __dirname
was passed in, it would be something like node_modules/nodebb-plugin-blah/utils/config.json
@pitaj Many thanks for your effort
Okay so I just npm link
'ed my plugin again so I thought some file will be updated. But they weren't.
Here is my full source code of libary.js
:
'use strict';
/* NodeBB Basic Plugin Libraries */
const controllers = require('./lib/controllers');
const plugin = {};
/* Third Party Libraries */
const Discord = require("discord.js");
const fs = require("fs");
// Nodebb Discord Bot
const config = JSON.parse(fs.readFileSync("./utils/config.json", "utf-8"));
var client = new Discord.Client();
let debug = true;
plugin.init = function (params, callback, client) {
myDebug("nodebb-discord-bot-started");
callback();
};
function myDebug(msg){
if(debug){
console.log(msg);
}
}
module.exports = plugin;
2021-01-12T10:46:19.318Z [4567/4689] - error: Error: ENOENT: no such file or directory, open './utils/config.json'
at Object.openSync (fs.js:462:3)
at Object.readFileSync (fs.js:364:35)
at Object.<anonymous> (/home/ubuntu/nodebb-linked-modules/nodebb-plugin-makesmart-discord-bot/library.js:15:30)
at Module._compile (internal/modules/cjs/loader.js:999:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object.Plugins.requireLibrary (/home/ubuntu/nodebb/src/plugins/index.js:70:39)
I tried it with path
again:
// Nodebb Discord Bot
var configpath = path.join(__dirname, 'utils', 'config.json');
const config = JSON.parse(fs.readFileSync(configpath, "utf-8"));
var client = new Discord.Client();
an suddenly ... it worked! o.O
2021-01-12T10:51:15.711Z [4567/4765] - info: [api] Adding 2 route(s) to `api/v3/plugins`
2021-01-12T10:51:15.889Z [4567/4765] - info: Routes added
2021-01-12T10:51:15.933Z [4567/4765] - info: NodeBB Ready
2021-01-12T10:51:15.943Z [4567/4765] - info: Enabling 'trust proxy'
2021-01-12T10:51:15.972Z [4567/4765] - info: NodeBB is now listening on: 0.0.0.0:4567
I think it was really because I ran npm link again. Funny.* I'm sorry. Most of the time, the problem is in front of the computer.
But still a strange behavior in my opinion. Well ... Good to know for the future. @PitaJ as mentioned thank you for you effort.
For any others having the same issue:
npm link
in ./nodebb
again to refresh something in the plugin folder ...I dont know tbh ...