Node.js Vue无法导入jsonwebtoken,这表明未找到依赖项:net dns
这是我的代码auth.js(koa) 这是我的TodoList.vue(vue)Node.js Vue无法导入jsonwebtoken,这表明未找到依赖项:net dns,node.js,webpack,vuejs2,json-web-token,Node.js,Webpack,Vuejs2,Json Web Token,这是我的代码auth.js(koa) 这是我的TodoList.vue(vue) 。。。 从“jsonwebtoken”导入jwt 导出默认值{ 已创建(){//组件创建时调用 const userInfo=this.getUserInfo() 如果(userInfo!==null){ this.id=userInfo.id this.name=userInfo.name }否则{ this.id=“” this.name=“” } }, 数据(){ 返回{ 名称:“莫鲁内尔芬”, 待办事项:'
。。。
从“jsonwebtoken”导入jwt
导出默认值{
已创建(){//组件创建时调用
const userInfo=this.getUserInfo()
如果(userInfo!==null){
this.id=userInfo.id
this.name=userInfo.name
}否则{
this.id=“”
this.name=“”
}
},
数据(){
返回{
名称:“莫鲁内尔芬”,
待办事项:'',
activeName:'第一',
名单:[],
计数:0
}
},
计算:{//计算属性用于计算是否已经完成了所有任务
完成(){
让计数=0
让长度=this.list.length
for(让我加入此.list){
此.list[i]。状态===true?计数+=1:“”
}
this.count=count
如果(计数==长度| |长度==0){
返回真值
}否则{
返回错误
}
}
},
方法:{
addTodos(){
如果(this.todos===''){
返回
}
设obj={
状态:false,
内容:this.todos
}
此.list.push(obj)
this.todos=“”
},
已完成(索引){
this.$set(this.list[index],'status',true)
这是一封$message({
键入:“成功”,
信息:'任务完成'
})
},
删除(索引){
此.list.splice(索引,1)
这是一封$message({
键入:“info”,
信息:'任务删除'
})
},
还原(索引){
this.$set(this.list[index],'status',false)
这是一封$message({
键入:“info”,
信息:'任务还原'
})
},
getUserInfo(){
const-token=sessionStorage.getItem('my-token')
如果(令牌!==null){
让decode=jwt.verify(令牌“vue koa demo”)
返回解码
}否则{
返回空
}
}
}
}
...
然后在vsCODE npm中运行dev
未找到这些依赖项:
- net in./~/joi/lib/string.js
- dns位于./~/isemail/lib/isemail.js
- fs in./~/native dns/lib/platform.js
- 在./~/native dns/lib/server.js、./~/native dns/lib/utils.js和1个其他
jsonwebtoken已经是一个node.js模块,应该在服务器端使用。要在客户端进行解码,可以使用jwt decode。
这是我从ps中发现的:jwt在auth.js中运行良好,但当我从vue中的“jsonwebtoken”导入jwt时,它显示了问题所在
const auth=require('../function/auth');
const jwt = require('jsonwebtoken');
const bcrypt = require('bcryptjs');
var log = async (ctx,next)=>{
var Account=ctx.request.body.account,
Password=ctx.request.body.password,
query={
account:Account,
}
var data=await auth.log(query);
if(data.length>0){
if(bcrypt.compareSync(Password,data[0].password)){
const userToken={
account:data[0].account,
id:data[0]._id
}
const secret = 'vue-koa-demo';
const token =jwt.sign(userToken,secret);
ctx.response.type='application/json'
ctx.response.body={
sta:true,
token:token}
}
else if(!bcrypt.compareSync(Password,data[0].password)){
ctx.response.type='application/json'
ctx.response.body={
sta:false,
info:'密码错了'}
}
}if(data.length==0){
ctx.response.type='application/json'
ctx.response.body={
sta:false,
info:'账号不存在'}
}
}
...
<script>
import jwt from 'jsonwebtoken'
export default {
created () { // 组件创建时调用
const userInfo = this.getUserInfo()
if (userInfo !== null) {
this.id = userInfo.id
this.name = userInfo.name
} else {
this.id = ''
this.name = ''
}
},
data () {
return {
name: 'Molunerfinn',
todos: '',
activeName: 'first',
list: [],
count: 0
}
},
computed: { // 计算属性用于计算是否已经完成了所有任务
Done () {
let count = 0
let length = this.list.length
for (let i in this.list) {
this.list[i].status === true ? count += 1 : ''
}
this.count = count
if (count === length || length === 0) {
return true
} else {
return false
}
}
},
methods: {
addTodos () {
if (this.todos === '') {
return
}
let obj = {
status: false,
content: this.todos
}
this.list.push(obj)
this.todos = ''
},
finished (index) {
this.$set(this.list[index], 'status', true)
this.$message({
type: 'success',
message: '任务完成'
})
},
remove (index) {
this.list.splice(index, 1)
this.$message({
type: 'info',
message: '任务删除'
})
},
restore (index) {
this.$set(this.list[index], 'status', false)
this.$message({
type: 'info',
message: '任务还原'
})
},
getUserInfo () {
const token = sessionStorage.getItem('my-token')
if (token !== null) {
let decode = jwt.verify(token, 'vue-koa-demo')
return decode
} else {
return null
}
}
}
}
</script>
...