Solvedangular cli ng serve => Error: EPERM: operation not permitted, symlink

I am filing a bug.

  1. OS. Windows 7

  2. Versions.
    ng --version
    angular-cli: 0.0.39
    node: 4.4.3
    os: win32 x64

    node --version
    

    v4.4.3
    npm --version
    3.8.6
    npm info angular-cli
    { name: 'angular-cli',
    time:
    { modified: '2016-05-04T16:29:23.054Z',
    created: '2014-10-07T04:34:38.078Z',
    '1.0.0': '2014-10-07T04:34:38.078Z',
    '0.0.0': '2014-10-11T11:38:24.914Z',
    '0.0.1': '2015-08-03T17:12:04.553Z',
    '0.0.2': '2015-10-18T17:46:40.146Z',
    '0.0.3': '2015-10-18T21:42:52.445Z',
    '0.0.4': '2015-10-19T01:14:13.216Z',
    '0.0.5': '2015-10-19T09:14:01.712Z',
    '0.0.6': '2015-10-19T09:36:51.644Z',
    '0.0.7': '2015-10-19T11:48:24.233Z',
    '0.0.8': '2015-10-19T11:51:59.318Z',
    '0.0.9': '2015-10-19T21:18:13.725Z',
    '0.0.10': '2015-10-19T22:18:13.091Z',
    '0.0.11': '2015-11-03T05:03:06.345Z',
    '0.0.12': '2015-11-15T10:10:48.551Z',
    '0.0.13': '2015-12-04T17:16:43.662Z',
    '0.0.14': '2015-12-05T01:40:39.377Z',
    '0.0.15': '2015-12-05T05:50:59.226Z',
    '0.0.16': '2015-12-10T12:23:28.722Z',
    '0.0.17': '2015-12-14T19:37:08.400Z',
    '0.0.18': '2015-12-15T12:51:47.990Z',
    '0.0.19': '2015-12-15T18:23:33.077Z',
    '0.0.20': '2015-12-15T20:39:55.357Z',
    '0.0.22': '2016-02-20T00:36:56.908Z',
    '0.0.23': '2016-02-20T01:44:13.897Z',
    '0.0.24': '2016-02-25T17:41:20.619Z',
    '0.0.25': '2016-03-10T02:10:05.410Z',
    '0.0.26': '2016-03-23T00:39:46.402Z',
    '0.0.27': '2016-03-23T22:05:56.538Z',
    '0.0.28': '2016-03-28T22:39:45.766Z',
    '0.0.29': '2016-03-30T18:10:47.060Z',
    '0.0.30': '2016-04-06T22:27:32.015Z',
    '0.0.31': '2016-04-11T18:20:32.677Z',
    '0.0.33': '2016-04-19T22:31:48.209Z',
    '0.0.34': '2016-04-26T17:56:20.524Z',
    '0.0.37': '2016-05-03T18:49:21.731Z',
    '0.0.39': '2016-05-04T16:29:23.054Z' },
    maintainers:
    [ 'angularcore angular-core+npm@google.com',
    'rodyhaddad npm@rodyhaddad.com' ],
    description: 'CLI tool for Angular',
    versions:
    [ '0.0.0',
    '0.0.1',
    '0.0.2',
    '0.0.3',
    '0.0.4',
    '0.0.5',
    '0.0.6',
    '0.0.7',
    '0.0.8',
    '0.0.9',
    '0.0.10',
    '0.0.11',
    '0.0.12',
    '0.0.13',
    '0.0.14',
    '0.0.15',
    '0.0.16',
    '0.0.17',
    '0.0.18',
    '0.0.19',
    '0.0.20',
    '0.0.22',
    '0.0.23',
    '0.0.24',
    '0.0.25',
    '0.0.26',
    '0.0.27',
    '0.0.28',
    '0.0.29',
    '0.0.30',
    '0.0.31',
    '0.0.33',
    '0.0.34',
    '0.0.37',
    '0.0.39' ],
    'dist-tags': { latest: '0.0.39' },
    readmeFilename: 'README.md',
    homepage: 'https://github.com/angular/angular-cli',
    keywords: [],
    repository:
    { type: 'git',
    url: 'git+https://github.com/angular/angular-cli.git' },
    author: 'Angular Authors',
    bugs: { url: 'https://github.com/angular/angular-cli/issues' },
    license: 'MIT',
    contributors:
    [ 'Rody Haddad npm@rodyhaddad.com (http://rodyhaddad.com/)',
    'Igor Minar igor@angularjs.org' ],
    users: { altrim: true, seachange: true },
    version: '0.0.39',
    main: 'lib/cli/index.js',
    trackingCode: 'UA-8594346-19',
    bin: { ng: './bin/ng' },
    scripts: { test: 'node tests/runner', lint: 'eslint .' },
    engines: { node: '>= 4.1.0' },
    dependencies:
    { broccoli: '^1.0.0-beta.7',
    'broccoli-caching-writer': '^2.2.1',
    'broccoli-concat': '^2.2.0',
    'broccoli-funnel': '^1.0.1',
    'broccoli-merge-trees': '^1.1.1',
    'broccoli-source': '^1.1.0',
    'broccoli-writer': '^0.1.1',
    chalk: '^1.1.3',
    'ember-cli': '2.5.0',
    'ember-cli-string-utils': '^1.0.0',
    exit: '^0.1.2',
    'fs-extra': '^0.30.0',
    glob: '^7.0.3',
    leek: '0.0.21',
    lodash: '^4.11.1',
    opn: '4.0.1',
    resolve: '^1.1.7',
    shelljs: '^0.7.0',
    'silent-error': '^1.0.0',
    'symlink-or-copy': '^1.0.3',
    'systemjs-builder': '^0.15.16',
    typescript: '^1.8.10',
    typings: '^0.8.1' },
    'ember-addon': { paths: [ './addon/ng2/' ] },
    devDependencies:
    { chai: '^3.5.0',
    'clang-format': '^1.0.38',
    eslint: '^2.8.0',
    'exists-sync': '0.0.3',
    minimatch: '^3.0.0',
    mocha: '^2.4.5',
    'mock-fs': '^3.8.0',
    'object-assign': '^4.0.1',
    rewire: '^2.5.1',
    sinon: '^1.17.3',
    through: '^2.3.8',
    tslint: '^3.8.1',
    'walk-sync': '^0.2.6' },
    gitHead: '8a15f90ccc6783196069325cd9249326424275b0',
    dist:
    { shasum: '89f55716f31a6e517f6404a6fd7f360292c893ed',
    tarball: 'https://registry.npmjs.org/angular-cli/-/angular-cli-0.0.39.tgz' },
    directories: {} }

  3. Repro steps.
    ng new angular2-cli-test
    cd angular2-cli-test
    ng serve

  4. The log given by the failure. Normally this include a stack trace and some
    more information.

c:\Workspaces\angular2-cli-test>ng serve

Running without elevated rights. Running Ember CLI "as Administrator" increases performance significantly.
See ember-cli.com/user-guide/#windows for details.

Livereload server on http://localhost:49154
Serving on http://localhost:4200/
The Broccoli Plugin: [BroccoliTypeScriptCompiler] failed with:
Error: EPERM: operation not permitted, symlink 'c:\Workspaces\angular2-cli-test\tmp\broccoli_type_script_compiler-cache_path-EyQJV
SXC.tmp\src\app\angular2-cli-test.component.spec.js.map' -> 'c:\Workspaces\angular2-cli-test\tmp\broccoli_type_script_compiler-out
put_path-C73bxA1u.tmp\src\app\angular2-cli-test.component.spec.js.map'

  1. Mention any other details that might be useful.
    I'm on Win 7 ... no admin rights ... and I will never get admin rights due to the security restrictions in the company.
27 Answers

✔️Accepted Answer

You guys need to run ng serve inside a cmd with administrator privileges. or whatever comandline you use, but with admin rights.

Other Answers:

no admin rights ... and I will never get admin rights due to the security restrictions/policy in the company.

+1
Sadly this makes it impossible to use at work for a lot of people.

We solved this issue for us using this little patch of file angular-cli/lib/broccoli/broccoli-typescript.js in line 206:

try {
  fs.symlinkSync(absoluteFilePath, outputFilePath);
} catch(e) {
  const conentStr = fs.readFileSync(absoluteFilePath);
  fs.writeFileSync(outputFilePath, conentStr);
}

It runs little slower than creating symlink, but still it's totally fine for us. Probably one can also use a more performing way for synchronous copying files using node (?).

i had the same error and i fixed that just by running the command line as Administrator

More Issues: