幾個月前我開始使用 vscode(在 windows10 上)開發 nodejs 服務器休息服務,一切運行順利。后來,我開始將 vscode 也用于使用 PlatformIO 的 ESP32 C 程式,我很高興我做到了。問題是現在我回傳到我的 nodejs 程式,我遇到了錯誤,主要是因為 nodejs 找不到“serialport”模塊。我懷疑這個問題與路徑和“serialport”模塊的具體實作方式有關(作為 C 源代碼,我在某處讀到過???)。/server/node_modules 目錄包含一個目錄“@serialport”。“index.js”程式開始運行,但出現以下錯誤。請幫忙。
console.log("server running");
var serialPORT = 'COM10'; // WINDOWS 10 VERSION
//var serialPORT = '/dev/ttyS0'; // LINUX SERVER
var serialport = require("serialport");
console.log("serialport module loaded"); // NEVER REACHES HERE
var port = new serialport(serialPORT, { baudRate:38400, }, (err)=>{
if(err) console.log("Serialport Error, line #11", err.message);
else console.log("\r\n\nserial port /dev/serial0 on pins #8: TXD, #10 RXD is open\r\n\n");
return;
}
);
const Readline = serialport.parsers.Readline;
const parser = new Readline();
port.pipe(parser);
parser.on('data', onData);
// REST OF SERVER ...
列印輸出和錯誤如下:
server running
internal/modules/cjs/loader.js:883
throw err;
^
Error: Cannot find module 'serialport'
Require stack:
- C:\Users\Panos\Documents\node_js projects\server\index.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)
at Function.Module._load (internal/modules/cjs/loader.js:725:27)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.<anonymous> (C:\Users\Panos\Documents\node_js projects\server\index.js:8:18)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'C:\\Users\\Panos\\Documents\\node_js projects\\server\\index.js'
]
}
package.json 如下:
{
"name": "server",
"version": "1.0.0",
"description": "node.js version of esp32 web server running on raspberry pi 4",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "panos",
"license": "ISC",
"dependencies": {
"url": "^0.11.0"
}
}
uj5u.com熱心網友回復:
您尚未安裝該軟體包,因為它未在 package.json 中列出。運行此命令以在專案目錄中使用 cmd 控制臺安裝串行埠
npm i serialport
uj5u.com熱心網友回復:
答案當然在手冊中:
- 本地安裝(默認):將東西放在當前包根目錄的 ./node_modules 中。
- 全域安裝(使用 -g):將東西放在 /usr/local 或安裝節點的任何地方。
- 如果您要 require() 它,請在本地安裝它。
- 如果要在命令列上運行它,請全域安裝它。
- 如果兩者都需要,則在兩個地方都安裝它,或者使用 npm 鏈接。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/381330.html
