使用来自 'path' 的导入路径时无法读取未定义的 属性 'resolve'
Cannot read property 'resolve' of undefined when using import path from 'path'
使用时:
import path from 'path';
path.resolve('/')
我得到标题错误,但是当我使用
require('path').resolve('messages.json'))
import { readFile, writeFile } from 'fs/promises';
import { v4 as uuidv4 } from 'uuid';
import path from 'path';
interface MessagesJson {
messages: Array<{ content: string; id: string }>;
}
export class MessagesRepository {
async findOne(id: string): Promise<string> {
return id;
}
async findAll(): Promise<any> {
return null;
}
async create(message: any): Promise<any> {
console.log(' dirname', require('path').resolve('messages.json'));
console.log(' path.resolve', path.resolve('/'));
// console.log(' path.resolve', path.resolve(__dirname, '/src'));
const messages: any = await readFile('src/messages.json', 'utf-8');
const parsedMessages: MessagesJson = JSON.parse(messages);
const newMessage = {
content: message,
id: uuidv4(),
};
await parsedMessages.messages.push(newMessage);
await writeFile('src/messages.json', JSON.stringify(parsedMessages));
return parsedMessages;
}
}
对于问题上下文,我正在使用 nestjs 开发一个小项目,path.foo() 的任何选项都会得到与上面列出的相同的错误,是否与代码编译后相关?
我非常迷失 where/what 文档 and/or 我应该阅读的信息才能理解正在发生的事情。
require
从技术上讲,它本身就是一个命名导入。这意味着在 Typescript 中它需要像 import * as path from 'path'
这样你才能使用 path.resolve
。另一种选择是使用 import { resolve } from 'path';
解构导入,现在您可以直接调用 resolve()
。
使用时:
import path from 'path';
path.resolve('/')
我得到标题错误,但是当我使用
require('path').resolve('messages.json'))
import { readFile, writeFile } from 'fs/promises';
import { v4 as uuidv4 } from 'uuid';
import path from 'path';
interface MessagesJson {
messages: Array<{ content: string; id: string }>;
}
export class MessagesRepository {
async findOne(id: string): Promise<string> {
return id;
}
async findAll(): Promise<any> {
return null;
}
async create(message: any): Promise<any> {
console.log(' dirname', require('path').resolve('messages.json'));
console.log(' path.resolve', path.resolve('/'));
// console.log(' path.resolve', path.resolve(__dirname, '/src'));
const messages: any = await readFile('src/messages.json', 'utf-8');
const parsedMessages: MessagesJson = JSON.parse(messages);
const newMessage = {
content: message,
id: uuidv4(),
};
await parsedMessages.messages.push(newMessage);
await writeFile('src/messages.json', JSON.stringify(parsedMessages));
return parsedMessages;
}
}
对于问题上下文,我正在使用 nestjs 开发一个小项目,path.foo() 的任何选项都会得到与上面列出的相同的错误,是否与代码编译后相关?
我非常迷失 where/what 文档 and/or 我应该阅读的信息才能理解正在发生的事情。
require
从技术上讲,它本身就是一个命名导入。这意味着在 Typescript 中它需要像 import * as path from 'path'
这样你才能使用 path.resolve
。另一种选择是使用 import { resolve } from 'path';
解构导入,现在您可以直接调用 resolve()
。