导入包时出现此错误:
未捕获的TypeError:未能解析模块说明符“axios”。相对引用必须以“/"、“./"或“../"开头。
当添加”./“,“../“时出现此错误
GET http://localhost:8080/js/axios net::ERR_ABORTED 404(Not Found)
package.json
{
"type": "module",
"name": "fives",
"version": "1.0.0",
"description": "game",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node ./app.js"
},
"author": "ayah alrifai",
"license": "ISC",
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-preset-es2015": "^6.0.15",
"rimraf": "^3.0.2"
},
"dependencies": {
"axios": "^0.19.2",
"express": "^4.17.1",
"socket.io": "^2.3.0",
"socket.io-client": "^2.3.0"
}
}
字符串
app.js
import http from "http";
import express from "express";
import io from "socket.io-client";
import path from 'path';
const app=express();
const port="8080";
app.use('/image', express.static('./public/img'));
app.use('/css', express.static('./public/css'));
app.use('/js', express.static('./js'));
app.get('/wait', (req, res)=> {
res.sendFile(path.join(path.resolve()+'/html/await.html'));
});
app.get('/play', (req, res)=> {
res.sendFile(path.join(path.resolve()+'/html/play.html'));
});
app.listen(port);
型
wait.js
import {getWaitedPlayers,createUser,deleteUser,isSelected,action} from "./fivesApi.js";
//code
型
fivesApi.js
import axios from "axios";
//code
型
树
.
├── html
│ ├── wait.html
│ └── play.html
├── app.js
├── js
│ ├── wait.js
│ ├── fivesApi.js
│ └── play.js
├── node_modules
├── package.json
├── package-lock.json
└── public
├── css
│ └── fives.css
└── img
├── 2.png
├── 5.png
└── ayah.png
型
2条答案
按热度按时间4sup72z81#
花了2个小时,终于找到了解决办法,你需要做的第一件事是
字符串
然后package.json添加以下两行代码
型
最后npm run dev。
如果你仍然有麻烦,please open this链接它只是节省了我这么多的时间。
xlpyo6sf2#
这对我在一个(有点)类似的情况下工作。张贴的情况下,它帮助别人。我觉得有一个更好的方法,但它逃脱我现在。
上下文:使用express.js服务器来提供位于子文件夹中的整个客户端站点,并通过客户端JS模块中的esm连接 socket.io客户端。
1.在express服务器中,定义
node_modules
目录的路径:const_ROOT = dirname(fileURLToPath(import.Meta.url)); app.use('/node_modules',express.static(join(node_ROOT,“node_modules”);
1.在客户端模块中,提供与文件系统中显示的完全相同的显式路径名:
从“/node_modules/socket.io/client-dist/socket.io.esm.min.js“导入{ io };
1.当然,要确保第二个部分在js模块中,所以脚本导入看起来像这样: