【问题标题】:Cannot read property 'resolve' of undefined when using import path from 'path'使用“路径”中的导入路径时无法读取未定义的属性“解析”
【发布时间】:2021-09-07 04:08:20
【问题描述】:

使用时:

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() 的任何选项都会出现与上面列出的相同的错误,是否与代码编译后相关?

我非常迷茫我应该阅读哪里/什么文档和/或信息才能理解正在发生的事情。

【问题讨论】:

  • import * as path from 'path';

标签: node.js typescript nestjs


【解决方案1】:

require 从技术上讲,它本身就是一个命名导入。这意味着在 Typescript 中它需要像 import * as path from 'path' 这样您才能使用 path.resolve。另一种选择是使用import { resolve } from 'path'; 解构导入,现在您可以直接调用resolve()

【讨论】:

  • 这是我的一个非常愚蠢的错误,非常感谢您的回答!
猜你喜欢
  • 2021-12-26
  • 1970-01-01
  • 2014-07-28
  • 2018-08-18
  • 2015-11-22
  • 2014-08-16
  • 1970-01-01
  • 1970-01-01
  • 2019-10-20
相关资源
最近更新 更多