我收到未定义的包,即使它们在我的 package.json 和 node_modules 文件夹中
I'm getting undefined packages even though I have them in my package.json and node_modules folder
所以我正在开发一个使用 NestJS 作为后端的网络应用程序。我还使用 docker 来构建我所有的后端。我遇到一个问题,一些已安装的软件包记录为“未定义”,而其他一些则正常工作。
例如在我的 CreateUser class 我有
import bcrypt from 'bcrypt';
@Injectable()
export class CreateUser {
constructor(
@InjectRepository(User)
private usersRepo: Repository<User>,
) {}
async execute(input: CreateUserInput): Promise<User> {
console.log('bcrypt', bcrypt);
const user = this.usersRepo.create(input);
user.email = input.email.trim().toLowerCase();
user.password = await bcrypt.hash(input.password, 10);
const newUser = await this.usersRepo.save(user);
return newUser;
}
当我执行这个函数时,它会记录这个
bcrypt undefined
data TypeError: Cannot read property 'hash' of undefined
但是如果我去 node_modules 我已经安装了 bcrypt 模块。我的 package.json
也是如此
我认为这是一个 docker 问题,但我已经进入容器并检查了 node_modules 文件夹,它也安装在那里。这是我的 docker 文件以防万一
FROM node:12-alpine
ENV NODE_ENV development
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json package-lock.json /usr/src/app/
RUN npm install
COPY . .
ENTRYPOINT ["npm", "run", "start:dev"]
为什么我不能使用这个包有什么想法吗?
你应该这样做
import {hash} from 'bcrypt'
然后
user.password = await hash(input.password, 10);
了解更多请参考:https://learnjsx.com/category/2/posts/es6-javaScript
所以我正在开发一个使用 NestJS 作为后端的网络应用程序。我还使用 docker 来构建我所有的后端。我遇到一个问题,一些已安装的软件包记录为“未定义”,而其他一些则正常工作。
例如在我的 CreateUser class 我有
import bcrypt from 'bcrypt';
@Injectable()
export class CreateUser {
constructor(
@InjectRepository(User)
private usersRepo: Repository<User>,
) {}
async execute(input: CreateUserInput): Promise<User> {
console.log('bcrypt', bcrypt);
const user = this.usersRepo.create(input);
user.email = input.email.trim().toLowerCase();
user.password = await bcrypt.hash(input.password, 10);
const newUser = await this.usersRepo.save(user);
return newUser;
}
当我执行这个函数时,它会记录这个
bcrypt undefined
data TypeError: Cannot read property 'hash' of undefined
但是如果我去 node_modules 我已经安装了 bcrypt 模块。我的 package.json
也是如此我认为这是一个 docker 问题,但我已经进入容器并检查了 node_modules 文件夹,它也安装在那里。这是我的 docker 文件以防万一
FROM node:12-alpine
ENV NODE_ENV development
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json package-lock.json /usr/src/app/
RUN npm install
COPY . .
ENTRYPOINT ["npm", "run", "start:dev"]
为什么我不能使用这个包有什么想法吗?
你应该这样做
import {hash} from 'bcrypt'
然后
user.password = await hash(input.password, 10);
了解更多请参考:https://learnjsx.com/category/2/posts/es6-javaScript