2

i was looking for a solution to digitally sign a pdf with a self-signed certificat and came across a video in youtube explaining the process using pdf-lib and node-signpdf libraries. However, after following the instructions it didnt work as intended and encountered a problem:

  • i executed the command ( npm i ) and (npm start ) as shown in the github repo of the project.

repo : https://github.com/RichardBray/pdf_sign

Demo ( 8 mins video ) : https://www.youtube.com/watch?v=OFZK5lc70OI&list=PLXUfmx2SIgyICZP-rA84Sle_ghq30W89N&index=4&t=1s

import SignPDF from "./SignPDF"; import fs from "node:fs"; import path from "node:path"; async function main() { const pdfBuffer = new SignPDF( path.resolve("test_assets/minions.pdf"), path.resolve("test_assets/certificate.p12") ); const signedDocs = await pdfBuffer.signPDF(); const randomNumber = Math.floor(Math.random() * 5000); const pdfName = `./exports/exported_file_${randomNumber}.pdf`; fs.writeFileSync(pdfName, signedDocs); console.log(`New Signed PDF created called: ${pdfName}`); } main(); 
> [email protected] start > npm run build && node dist/index.js > [email protected] build > ./node_modules/.bin/babel ./src -d ./dist '.' is not recognized as an internal command or external, an executable program or a batch file. 
  • i tried to run the code using VScode debugger and it displayed the following error :
Uncaught SyntaxError c:\\Users\\ACER\\Documents\\GitHub\\pdf_sign\\src\\index.js:1 import SignPDF from "./SignPDF"; ^^^^^^ SyntaxError: Cannot use import statement outside a module at compileFunction (undefined:352:18) at wrapSafe (undefined:1031:15) at Module.\_compile (undefined:1065:27) at Module.\_extensions..js (undefined:1153:10) at Module.load (undefined:981:32) at Module.\_load (undefined:822:12) at executeUserEntryPoint (undefined:81:12) at \<anonymous\> (undefined:17:47) 
1
  • Please provide enough code so others can better understand or reproduce the problem. Commented Mar 25, 2022 at 14:05

2 Answers 2

1

it appears that the problem is OS related. In fact , the code works fine under linux OS but have some issues with Windows OS related to import command. For windows OS replacing "import" commands with "require" commands solves the problem.

BEFORE:

import SignPDF from "./SignPDF"; import fs from "node:fs"; import path from "node:path"; 

AFTER :

const SignPDF = require("./SignPDF"); const fs = require("node:fs"); const path = require("node:path"); 

Edit: Whenever imports are found in the project they should be replaced with require commands . https://jobs.czconsultants.com/utils/convert-imports-to-require-online/0 this website helps converting multiple commands fast

Sign up to request clarification or add additional context in comments.

3 Comments

It's best practice to display the working code that was altered in a code block when answering for clarity
i did edit the comment to show the modifications .
This has nothing to do with the OS. import works fine on Windows.
0

SyntaxError: Cannot use import statement outside a module

Means Node doesn't recognize your script as a module.

You can either add "type": "module" to your package.json or change the file extension to .mjs and then Node should allow you to use the import keyword.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.