当我升级代码以使用私有字段时,在构建时我得到Error: Unexpected character '#' (Note that you need plugins to import files that are not JavaScript)
在这里了解更多
它只是不知道'#' ,就像不支持那样?
我只是好奇,否则,我会收到一些错误。
抬头并感谢您的任何提示或建议!
打字稿 3.8.3,
tslint 5.20.1
import typescript from 'rollup-plugin-typescript2'
import pkg from './package.json'
let defaults = { compilerOptions: { declaration: true } };
let override = { compilerOptions: { declaration: false } };
export default {
input: 'src/index.ts',
output: [
{
file: pkg.main,
format: 'cjs',
},
{
file: pkg.module,
format: 'es',
},
],
external: [
...Object.keys(pkg.dependencies || {}),
...Object.keys(pkg.peerDependencies || {}),
],
plugins: [
typescript({
tsconfigDefaults: defaults,
tsconfig: "tsconfig.json",
tsconfigOverride: override
})
],
}
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"strict": true,
"jsx": "preserve",
"declaration": true,
"declarationDir": "./dist",
"outDir": "./dist",
"importHelpers": true,
"noImplicitAny": true,
"moduleResolution": "node",
"experimentalDecorators": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"sourceMap": true,
"baseUrl": ".",
"skipLibCheck": true,
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost"
]
},
"include": [
"index.ts",
"src/**/*.ts",
"src/**/*.tsx",
"tests/**/*.ts",
"tests/**/*.tsx"
],
"exclude": [
"node_modules"
],
}
{
"name": "@vue-polkadot/vue-keyring",
"version": "2.0.0",
"author": "Matej Nemcek <[email protected]>",
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
"build-bundle": "vue-cli-service build --target lib --name vue-keyring ./src/index.ts",
"build:rollup": "rollup -c",
"build:rollup:watch": "rollup -cw"
},
"main": "dist/index.js",
"module": "dist/index.es.js",
"types": "dist/index.d.ts",
"files": [
"dist/*",
"src/*",
"public/*",
"*.json",
"*.js",
"*.ts"
],
"repository": "https://github.com:vue-polkadot/vue-ui.git",
"maintainers": [
"Matej Nemcek <[email protected]>"
],
"license": "MIT",
"dependencies": {
"@polkadot/keyring": "^2.6.2",
"@polkadot/types": "^1.7.1",
"@polkadot/util": "^2.6.2",
"@polkadot/util-crypto": "^2.2.2",
"@types/store": "^2.0.2",
"@types/webpack-env": "^1.14.0",
"@vue-polkadot/vue-settings": "0.0.11",
"core-js": "^2.6.5",
"mkdirp": "^1.0.3",
"rxjs": "^6.5.2",
"store": "^2.0.12",
"tslib": "1.11.1",
"tslint": "^6.1.0",
"vue": "^2.6.10",
"vue-class-component": "^7.0.2",
"vue-property-decorator": "^8.1.0",
"vue-styled-components": "^1.4.9"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^3.0.5",
"@vue/cli-plugin-typescript": "^3.0.5",
"@vue/cli-service": "^3.0.5",
"rollup": "^2.1.0",
"rollup-plugin-typescript2": "^0.26.0",
"typescript": "^3.8.3",
"vue-template-compiler": "^2.6.10"
}
}
❯ yarn build:rollup
yarn run v1.22.4
$ rollup -c
src/index.ts → dist/index.js, dist/index.es.js...
rpt2: built-in options overrides: {
"noEmitHelpers": false,
"importHelpers": true,
"noResolve": false,
"noEmit": false,
"inlineSourceMap": false,
"outDir": "/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/.cache/rollup-plugin-typescript2/placeholder",
"moduleResolution": 2,
"allowNonTsExtensions": true
}
rpt2: parsed tsconfig: {
"options": {
"declaration": false,
"target": 99,
"module": 99,
"strict": true,
"jsx": 1,
"outDir": "/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/.cache/rollup-plugin-typescript2/placeholder",
"importHelpers": true,
"noImplicitAny": true,
"moduleResolution": 2,
"experimentalDecorators": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"sourceMap": true,
"baseUrl": "/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring",
"skipLibCheck": true,
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"lib.esnext.d.ts",
"lib.dom.d.ts",
"lib.dom.iterable.d.ts",
"lib.scripthost.d.ts"
],
"configFilePath": "/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/tsconfig.json",
"noEmitHelpers": false,
"noResolve": false,
"noEmit": false,
"inlineSourceMap": false,
"allowNonTsExtensions": true
},
"fileNames": [
"/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/Keyring.ts",
"/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/defaults.ts",
"/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/index.ts",
"/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/main.ts",
"/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/shims-tsx.d.ts",
"/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/shims-vue.d.ts",
"/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/types.ts",
"/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/observable/accounts.ts",
"/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/observable/addresses.ts",
"/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/observable/contracts.ts",
"/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/observable/development.ts",
"/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/observable/genericSubject.ts",
"/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/observable/index.ts",
"/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/observable/types.ts",
"/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/options/index.ts",
"/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/options/types.ts",
"/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/stores/Browser.ts",
"/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/options/item.tsx"
],
"typeAcquisition": {
"enable": false,
"include": [],
"exclude": []
},
"raw": {
"compilerOptions": {
"declaration": false,
"target": "esnext",
"module": "esnext",
"strict": true,
"jsx": "preserve",
"declarationDir": "./dist",
"outDir": "./dist",
"importHelpers": true,
"noImplicitAny": true,
"moduleResolution": "node",
"experimentalDecorators": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"sourceMap": true,
"baseUrl": ".",
"skipLibCheck": true,
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost"
]
},
"include": [
"index.ts",
"src/**/*.ts",
"src/**/*.tsx",
"tests/**/*.ts",
"tests/**/*.tsx"
],
"exclude": [
"node_modules"
],
"compileOnSave": false
},
"errors": [],
"wildcardDirectories": {
"/users/wao/projects/vuepolkadot/vue-ui/packages/vue-keyring/src": 1,
"/users/wao/projects/vuepolkadot/vue-ui/packages/vue-keyring/tests": 1
},
"compileOnSave": false,
"configFileSpecs": {
"includeSpecs": [
"index.ts",
"src/**/*.ts",
"src/**/*.tsx",
"tests/**/*.ts",
"tests/**/*.tsx"
],
"excludeSpecs": [
"node_modules"
],
"validatedIncludeSpecs": [
"index.ts",
"src/**/*.ts",
"src/**/*.tsx",
"tests/**/*.ts",
"tests/**/*.tsx"
],
"validatedExcludeSpecs": [
"node_modules"
],
"wildcardDirectories": {
"/users/wao/projects/vuepolkadot/vue-ui/packages/vue-keyring/src": 1,
"/users/wao/projects/vuepolkadot/vue-ui/packages/vue-keyring/tests": 1
}
}
}
rpt2: typescript version: 3.8.3
rpt2: tslib version: 1.10.0
rpt2: rollup version: 2.1.0
rpt2: rollup-plugin-typescript2 version: 0.26.0
rpt2: plugin options:
{
"tsconfigDefaults": {
"compilerOptions": {
"declaration": true
}
},
"tsconfig": "tsconfig.json",
"tsconfigOverride": {
"compilerOptions": {
"declaration": false
}
},
"verbosity": 3,
"check": true,
"clean": false,
"cacheRoot": "/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/.cache/rollup-plugin-typescript2",
"include": [
"*.ts+(|x)",
"**/*.ts+(|x)"
],
"exclude": [
"*.d.ts",
"**/*.d.ts"
],
"abortOnError": true,
"rollupCommonJSResolveHack": false,
"useTsconfigDeclarationDir": false,
"transformers": [],
"objectHashIgnoreUnknownHack": false,
"cwd": "/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring",
"typescript": "version 3.8.3"
}
rpt2: rollup config:
{
"experimentalCacheExpiry": 10,
"external": [
"@polkadot/keyring",
"@polkadot/types",
"@polkadot/util",
"@polkadot/util-crypto",
"@types/store",
"@types/webpack-env",
"@vue-polkadot/vue-settings",
"core-js",
"mkdirp",
"rxjs",
"store",
"tslib",
"tslint",
"vue",
"vue-class-component",
"vue-property-decorator",
"vue-styled-components"
],
"inlineDynamicImports": false,
"input": "src/index.ts",
"perf": false,
"plugins": [
{
"name": "rpt2"
},
{
"name": "stdin"
}
],
"strictDeprecations": false
}
rpt2: tsconfig path: /Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/tsconfig.json
rpt2: included:
[
"*.ts+(|x)",
"**/*.ts+(|x)"
]
rpt2: excluded:
[
"*.d.ts",
"**/*.d.ts"
]
rpt2: Ambient types:
rpt2: /Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/shims-tsx.d.ts
rpt2: /Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/shims-vue.d.ts
rpt2: /Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/@types/bn.js/index.d.ts
rpt2: /Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/@types/color-name/index.d.ts
rpt2: /Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/@types/events/index.d.ts
rpt2: /Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/@types/glob/index.d.ts
rpt2: /Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/@types/minimatch/index.d.ts
rpt2: /Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/@types/node/ts3.2/index.d.ts
rpt2: /Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/@types/normalize-package-data/index.d.ts
rpt2: /Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/@types/q/index.d.ts
rpt2: /Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/@types/store/index.d.ts
rpt2: /Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/@types/webpack-env/index.d.ts
rpt2: /Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/@types/events/index.d.ts
rpt2: /Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/@types/glob/index.d.ts
rpt2: /Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/@types/minimatch/index.d.ts
rpt2: /Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/@types/node/ts3.2/index.d.ts
rpt2: /Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/@types/q/index.d.ts
rpt2: ambient types changed, redoing all semantic diagnostics
rpt2: transpiling '/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/index.ts'
rpt2: cache: '/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/.cache/rollup-plugin-typescript2/rpt2_1526ef49297d2998997b39723d787862a1856de8/code/cache/2e74b8aa9cf50ce50dc9c899dfd096c9e3ddef66'
rpt2: cache miss
rpt2: cache: '/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/.cache/rollup-plugin-typescript2/rpt2_1526ef49297d2998997b39723d787862a1856de8/syntacticDiagnostics/cache/2e74b8aa9cf50ce50dc9c899dfd096c9e3ddef66'
rpt2: cache miss
rpt2: cache: '/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/.cache/rollup-plugin-typescript2/rpt2_1526ef49297d2998997b39723d787862a1856de8/semanticDiagnostics/cache/2e74b8aa9cf50ce50dc9c899dfd096c9e3ddef66'
rpt2: cache miss
rpt2: dependency '/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/Keyring.ts'
rpt2: imported by '/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/index.ts'
rpt2: resolving './Keyring' imported by '/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/index.ts'
rpt2: to '/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/Keyring.ts'
rpt2: transpiling '/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/src/Keyring.ts'
rpt2: cache: '/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/.cache/rollup-plugin-typescript2/rpt2_1526ef49297d2998997b39723d787862a1856de8/code/cache/21a1adfe02fac21a10118d177bfd0b084dd0c7b6'
rpt2: cache miss
rpt2: cache: '/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/.cache/rollup-plugin-typescript2/rpt2_1526ef49297d2998997b39723d787862a1856de8/syntacticDiagnostics/cache/21a1adfe02fac21a10118d177bfd0b084dd0c7b6'
rpt2: cache miss
rpt2: cache: '/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/.cache/rollup-plugin-typescript2/rpt2_1526ef49297d2998997b39723d787862a1856de8/semanticDiagnostics/cache/21a1adfe02fac21a10118d177bfd0b084dd0c7b6'
rpt2: cache miss
[!] Error: Unexpected character '#' (Note that you need plugins to import files that are not JavaScript)
src/Keyring.ts (40:11)
38:
39: #keyring?: KeyringInstance;
40: #accounts: AddressSubject = accounts;
^
41:
42: #addresses: AddressSubject = addresses;
Error: Unexpected character '#' (Note that you need plugins to import files that are not JavaScript)
at error (/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/rollup/dist/shared/rollup.js:10120:30)
at Module.error (/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/rollup/dist/shared/rollup.js:14557:16)
at tryParse (/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/rollup/dist/shared/rollup.js:14450:23)
at Module.setSource (/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/rollup/dist/shared/rollup.js:14839:33)
at /Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/rollup/dist/shared/rollup.js:16717:20
at async Promise.all (index 1)
at async Promise.all (index 0)
at async Promise.all (index 0)
at async Promise.all (index 0)
at rollupInternal (/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/rollup/dist/shared/rollup.js:18126:18)
error Command failed with exit code 1.
这是汇总抱怨它无法解析插件生成的 JS,这是我认为的解决方法: https :
我试过https://github.com/rollup/rollup/issues/3128#issuecomment -534144483
汇总配置文件
import acornPrivateFields from 'acorn-private-class-elements'
import typescript from 'rollup-plugin-typescript2'
import pkg from './package.json'
let defaults = { compilerOptions: { declaration: true } };
let override = { compilerOptions: { declaration: false } };
export default {
input: 'src/index.ts',
output: [
{
file: pkg.main,
format: 'cjs',
},
{
file: pkg.module,
format: 'es',
},
],
external: [
...Object.keys(pkg.dependencies || {}),
...Object.keys(pkg.peerDependencies || {}),
],
acornInjectPlugins: [
acornPrivateFields()
],
plugins: [
typescript({
tsconfigDefaults: defaults,
tsconfig: "tsconfig.json",
tsconfigOverride: override,
// verbosity: 3,
})
],
}
输出
❯ yarn build:rollup
yarn run v1.22.4
$ rollup -c
[!] TypeError: Cannot read property 'prototype' of undefined
TypeError: Cannot read property 'prototype' of undefined
at module.exports (/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/acorn-private-class-elements/index.js:12:14)
at Object.<anonymous> (/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/rollup.config.js:30:5)
at Module._compile (internal/modules/cjs/loader.js:1157:30)
at Object.require.extensions.<computed> [as .js] (/Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/rollup/dist/bin/rollup:824:24)
at Module.load (internal/modules/cjs/loader.js:1001:32)
at Function.Module._load (internal/modules/cjs/loader.js:900:14)
at Module.require (internal/modules/cjs/loader.js:1043:19)
at require (internal/modules/cjs/helpers.js:77:18)
at /Users/wao/Projects/vuepolkadot/vue-ui/packages/vue-keyring/node_modules/rollup/dist/bin/rollup:831:32
error Command failed with exit code 1.
您是否从某处导入acornPrivateFields
?
试过了,同样的错误。 这是我的配置:
`从“acorn-class-fields”导入 acornClassFields
从“acorn-private-class-elements”导入 acornClassElements
从“acorn-static-class-features”导入 acornStaticClassFeatures
从“acorn-private-methods”导入 acornPrivateMethods
导出默认{
输入:['src/ext/src/bg/background.js'],//,'src/ext/src/browser_action/main.js'],
输出: {
目录:'dist/ext/src/bg',
//file: 'ext/src/bg/background-dist.js',
格式:'es',
插件:[]
},
acornInject插件:[
acornClassFields(),`
我得到
[!] TypeError: Cannot read property 'prototype' of undefined
TypeError: Cannot read property 'prototype' of undefined
at module.exports (C:\Users\thear\Documents\Programming\AutoStamperThetis\node_modules\acorn-class-fields\node_modules\acorn-private-class-elements\index.js:12:14)
@ezolenko是的,它在 rollup.config.js 中,只是忘了在格式中再添加一个新行💇♂
我昨天也试过了https://www.npmjs.com/package/@rollup/plugin -typescript
有一个不同的错误,但至少它知道它是私有的
但是当我将目标从 es5 移到更高的位置时,它的 # 又是未知的。
对我来说,它看起来像是缺少解析器或一些帮手?
我对私有领域真的很陌生,我们只是在合并上游的东西 😅
@ezolenko @0biWanKenobi这可能是问题吗? https://github.com/acornjs/acorn-private-class-elements/pull/10
@yangwao这是我遇到的另一个问题,我也在那里发表了评论。 在这种情况下,错误是我们在配置汇总时不需要括号,因此:
acornInjectPlugins: [
acornClassFields
]
是要走的路。 仍然将 # 标记为错误,但那是另一回事了
最有用的评论
@yangwao这是我遇到的另一个问题,我也在那里发表了评论。 在这种情况下,错误是我们在配置汇总时不需要括号,因此:
是要走的路。 仍然将 # 标记为错误,但那是另一回事了