在这种情况下,[ERR_PACKAGE_PATH_NOT_EXPORTED] 到底指的是什么?

问题描述 投票:0回答:1

我正在尝试在我已在 digitalocean 上设置的虚拟机上提供以下 http_server.js 文件。

为什么我会收到此错误消息?

这是我的 http_server.js 文件:

// Import required modules
import express from 'express';
import lowdb from "lowdb";
import adapters from "lowdb/adapters";
import { FileSync } from "lowdb/adapters";
import cors from 'cors';
import { faker } from '@faker-js/faker';

 const app = express();
 const adapter = new FileSync('db.json');
 const db = low(adapter);

// allow cross-origin resource sharing (CORS)
app.use(cors());

// data parser - used to parse post data
app.use(express.urlencoded({ extended: false }));
app.use(express.json());

// serve static files from public directory
app.use(express.static('public'));

// init the data store
db.defaults({ users: [] }).write();

// return all users
app.get('/data', function(req, res) {
  res.send(db.get('users').value());
});

// add user
app.post('/add', function(req, res) {
  var user = {
    name: req.body.name,
    dob: req.body.dob,
    email: req.body.email,
    username: req.body.username,
    password: req.body.password,
    phone: req.body.phone,
    streetaddress: req.body.streetaddress,
    citystatezip: req.body.citystatezip,
    latitude: req.body.latitude,
    longitude: req.body.longitude,
    avatar: faker.internet.avatar()
  };
  db.get('users').push(user).write();
  console.log(db.get('users').value());
  res.send(db.get('users').value());
});

// start server
app.listen(3001, function() {
  console.log('Running on port 3001!');
});

我认为我已经正确安装了所需的所有依赖项。我已经可以看到我的 package.json 文件中列出了以下依赖项:

{
  "name": "sample",
  "version": "1.0.0",
  "description": "vm app",
  "main": "index.js",
  "type": "module",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "saro",
  "license": "MIT",
  "dependencies": {
    "cors": "^2.8.5",
    "express": "^4.18.2",
    "FileSync": "^1.0.1",
    "lowdb": "^6.0.1",
    "lowdb-adapter": "^0.1.3",
    "node-fetch": "^2.6.1"
  }
}
node.js express httpserver esmodules lowdb
1个回答
0
投票

自2.0版本以来,适配器的API和模块发生了重大变化。请参阅 v6.0.1 的适配器文档:

import { JSONFile, JSONFileSync } from 'lowdb/node'

new Low(new JSONFile(filename), {})
new LowSync(new JSONFileSync(filename), {})

以及从 v1 到 v2 的迁移指南。

例如

index.js

import { Low } from "lowdb"; import { JSONFile } from "lowdb/node"; const adapter = new JSONFile("db.json"); const defaultData = { posts: [] }; const db = new Low(adapter, defaultData); await db.read(); console.log(db.data);

db.json

{ "posts": ["hello world"] }
执行结果:

$ node index.js { posts: [ 'hello world' ] }

package.json

{ "type": "module", "dependencies": { "lowdb": "^6.0.1" } }
节点:v18.16.1

© www.soinside.com 2019 - 2024. All rights reserved.