为了账号安全,请及时绑定邮箱和手机立即绑定

Gulp:建筑打字稿项目正在创建权限问题

Gulp:建筑打字稿项目正在创建权限问题

BIG阳 2021-04-13 17:15:08
我有一个打字稿项目,当我运行gulp构建时,我在目录中删除了一个文件夹,打字稿为我重新创建了该目录(这是理想的结果)。但是,它似乎是用奇怪的权限创建的。当我执行时ls -l,我获得了使用删除rimraf然后使用typescript创建的目录的以下权限。$ ls -ldrwxrwxrwx 1 rnaddy rnaddy  512 Apr  1 10:48 srcd????????? ? ?      ?         ?            ? types为什么显示问号?我认为这正在破坏我的构建,因为在构建时会出现错误,我认为这可能是问题所在。$ gulp build:watch[11:07:18] Using gulpfile ~\Documents\vscode\projects\red5\framework\gulpfile.js[11:07:18] Starting 'build:watch'...[11:07:18] Starting 'router'...rimraf: EPERM: operation not permitted, unlink 'C:\Users\rnaddy\Documents\vscode\projects\red5\framework\router\types'[11:07:20] 'router' errored after 1.99 s[11:07:20] Error: EPERM: operation not permitted, mkdir 'C:\Users\rnaddy\Documents\vscode\projects\red5\framework\router\types'[11:07:20] 'build:watch' errored after 2 s在我的gulp文件中执行的函数如下所示:const path = require('path')const gulp = require('gulp')const ts = require('gulp-typescript')const sourcemaps = require('gulp-sourcemaps')const rimraf = require('rimraf')const projects = {  router: './router',  server: './server',  storage: './storage',  session: './session',  template: './template',  middleware: './middleware',  // Optional dependencies  mysql: './mysql'}const tasks = [  'router', 'middleware', 'template', 'storage', 'session', 'server',  // Optional dependencies  'mysql']/** * Builds the project * @param {string} projectRoot * @returns {Promise<void>} */async function makeProject(projectRoot) {  let err = await new Promise(resolve => rimraf(path.join(projectRoot, 'types'), (err) => resolve(err)))  if (err) {    console.error('rimraf:', err.message)    // return resolve(false)  }  let tsResult = await new Promise(async resolve => {    let tsProject = ts.createProject(path.join(projectRoot, 'tsconfig.json'))    let tsResult = tsProject.src()      .pipe(sourcemaps.init())      .pipe(tsProject())      .on('finish', () => resolve(tsResult))  })
查看完整描述

1 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

看来问题是因为rimraf。除了删除目录types,我只需要删除目录的内容。

所以我只需要更改typestypes/*,它看起来像这样:

rimraf(path.join(projectRoot, 'types/*'), (err) => /* do stuff*/)


查看完整回答
反对 回复 2021-04-22
  • 1 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信